Android Q 分区储存: 最佳实践和几项更新

做者: 软件工程师 Jeff Sharkey 和产品经理 Seb Grubbhtml

应用沙盒是 Android 设计的核心部分,它可将不一样的应用隔离。基于应用沙盒的基本原则,Android Q 引入了分区储存特性。java

Beta 1发布以来,咱们收到了许多开发者关于这些变动的宝贵反馈,感谢你们帮助咱们打造更好的 Android 平台!鉴于这些反馈,咱们在更新迭代 Android Q Beta 的过程当中也在不断优化这项特性。在这篇文章中,咱们将与您分享在 Android Q 设备上如何声明应用对分区储存特性支持的方法,以及对开发者社区提交上来的一些问题的解答和最佳实践。android

帮助您支持分区储存特性的几项更新

咱们预计分区存储对那些遵循最佳实践的应用所形成的影响很小。不过,部分开发者向咱们反馈表示,分区储存对于某些应用而言是一项须要谨慎应对的变动,他们须要更多的时间来评估它对应用的影响。咱们本身也是开发者,所以咱们十分理解您可能须要更多时间来确保应用与此项变动的兼容性。所以,咱们很愿意协助您。设计模式

在即将发布的 Beta 3 版本中,若是应用的 target SDK 为 Android 9 Pie (API 等级 28) 或更低版本,那么,在默认状况下,应用储存方式将不会发生任何改变,依旧采用与旧版本 Android 系统相同的储存机制。在您更新现有应用以支持分区储存的过程当中,您可以使用新的清单属性让应用在 Android Q 设备上启用新的行为,即便应用针对 API 等级 28 或更低开发也无妨。app

这些变动的具体实现细节将在 Beta 3 版本中公布,但咱们想要提早通知您,帮助您更好地计划对于 Android Q 设备的应用更新。在明年发布的下一个 Android 主版本中,不论应用针对哪一个目标 SDK 等级开发,都必须支持分区储存特性,所以咱们建议您提早在应用中添加支持。欢迎各位继续向咱们提交反馈,帮助咱们进一步优化分区储存特性,以便为您应用的用例提供更好的支持。若是您有任何意见或建议,请参加分区储存专题调研问卷;您可请前往 Google 错误追踪器页面点击这里提交错误报告或特性请求。框架

针对常见反馈的几个最佳实践

您的反馈十分有价值,对咱们的设计决策帮助也很大。在这里,咱们但愿与您分享一下团队对几个常见问题的解答以及建议您采用的最佳实践:ide

  • 存储共享媒体文件: 若是您的应用须要与其它应用 (如照片库) 共享文件,并且即便在应用卸载后,这些文件仍需继续保留在设备中,那么,请您使用 MediaStore API。常见的媒体文件有如下三类特定集合: 音频 (Audio)、视频 (Video) 和图片 (Images)。至于其它类型的文件,您则可将其储存在新的下载文件集合中。应用必须使用系统选择器才能访问下载集合内的文件。
  • 存储应用内部文件: 若是您的应用不与其它应用共享文件,请将文件储存在包下目录。这能帮助您有条理地管理文件并限制文件混乱,由于,当用户卸载应用后,操做系统会负责接手后续的文件清除工做。Context.getExternalFilesDir() 函数可继续使用。
  • 权限及文件全部权: 在使用 MediaStore 的状况下,应用无需权限即可访问本身建立的文件,可是若是应用须要访问由其它应用提供的文件,则需请求权限。不过,在用户卸载应用以后又从新安装的状况下,您须要再次向用户请求权限,才能访问您的应用以前所提供的媒体文件。
  • 使用原生代码或库: 咱们推荐的设计模式是先在 Java 或 Kotlin 代码中寻找文件,而后将它的文件描述符 (file descriptor) 传递到您的原生代码中。
  • 高效处理多文件场景: 若是您须要在一个事务中进行批量文件操做,请考虑调用 ContentProvider.applyBatch()。如需获取更多有关 ContentProvider 批量处理的内容,请阅读《内容提供程序基础知识》。
  • 与系统文件选择器 (file picker) 集成:
    • 如文字处理器一类的文档应用可以使用 OPEN_DOCUMENTGET_CONTENT action 来启动系统文件选择器。请阅读《存储访问框架》,进一步了解二者差别。
    • 文件管理应用每每须要和各层目录下的其它应用协同工做。请使用 OPEN_DOCUMENT_TREE 让用户选择目录子树,接着,应用即可处理返回目录中的文件。在此项支持的帮助下,用户可经过任何已安装的 DocumentsProvider 事件访问文件,而这些事件则由基于云的或本地的储存解决方案所支持。

此外,咱们还为您准备了详细的《分区储存开发者文档》,您可仔细阅读并获取更多技术细节。函数

下一步

很高兴看到开发者们这段时间以来对 Android Q 的热情参与。咱们将在接下来的几个月中逐步收尾 Android Q 的开发工做,请继续测试并向咱们提交反馈。欢迎你们参加 Google I/O 2019 开发者大会,届时将有更多关于分区储存及其它 Android Q 特性的精彩内容等着您。咱们会在 5 月 8 日举办名为 “What’s New in Shared Storage” 的主题演讲,感兴趣的小伙伴可阅读推文《观看 Google I/O’19 的正确姿式》了解直播平台信息,咱们会在大会前一天公布直播入口,敬请关注。测试

点击这里提交错误报告或特性请求优化

相关文章
相关标签/搜索