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 的正確姿式》瞭解直播平臺信息,咱們會在大會前一天公佈直播入口,敬請關注。測試

點擊這裏提交錯誤報告或特性請求優化

相關文章
相關標籤/搜索