當前位置:編程學習大全網 - 源碼下載 - android 7.0對開發者會有哪些影響

android 7.0對開發者會有哪些影響

Android N 除了提供諸多新特性和功能外,還對系統和 API 行為做出了各種變更。 本文重點介紹您應該了解並在開發應用時加以考慮的壹些重要變更。

如果您之前發布過 Android 應用,請註意您的應用可能受到這些平臺變更的影響。

電池和內存

Android N 包括旨在延長設備電池壽命和減少 RAM 使用的系統行為變更。 這些變更可能會影響您的應用訪問系統資源,以及您的系統通過特定隱式 Intent 與其他應用互動的方式。

低電耗模式

Android 6.0(API 級別

23)引入了低電耗模式,當用戶設備未插接電源、處於靜止狀態且屏幕關閉時,該模式會推遲 CPU 和網絡活動,從而延長電池壽命。而 Android N

則通過在設備未插接電源且屏幕關閉狀態下、但不壹定要處於靜止狀態(例如用戶外出時把手持式設備裝在口袋裏)時應用部分 CPU

和網絡限制,進壹步增強了低電耗模式。

圖 1. 低電耗模式如何應用第壹級系統活動限制以延長電池壽命的圖示。

當設備處於充電狀態且屏幕已關閉壹定時間後,設備會進入低電耗模式並應用第壹部分限制: 關閉應用網絡訪問、推遲作業和同步。 如果進入低電耗模式後設備處於靜止狀態達到壹定時間,系統則會對 PowerManager.WakeLock、AlarmManager 鬧鈴、GPS

和 Wi-Fi 掃描應用余下的低電耗模式限制。 無論是應用部分還是全部低電耗模式限制,系統都會喚醒設備以提供簡短的維護時間窗口,在此窗口期間,應用程序可以訪問網絡並執行任何被推遲的作業/同步。

圖 2. 低電耗模式如何在設備處於靜止狀態達到壹定時間後應用第二級系統活動限制的圖示。

請註意,激活屏幕或插接設備電源時,系統將退出低電耗模式並取消這些處理限制。 此項新增的行為不會影響有關使您的應用適應 Android 6.0(API 級別 23)中所推出的舊版本低電耗模式的建議和最佳實踐,如低電耗模式和應用待機模式優化中所討論。

您仍應遵循這些建議(例如使用 Google Cloud Messaging (GCM) 發送和接收消息)並開始安排更新計劃以適應新增的低電耗模式行為。

Project Svelte:後臺優化

Android N 刪除了三項隱式廣播,以幫助優化內存使用和電量消耗。 此項變更很有必要,因為隱式廣播會在後臺頻繁啟動已註冊偵聽這些廣播的應用。 刪除這些廣播可以顯著提升設備性能和用戶體驗。

移動設備會經歷頻繁的連接變更,例如在 Wi-Fi 和移動數據之間切換時。 目前,可以通過在應用清單中註冊壹個接收器來偵聽隱式 CONNECTIVITY_ACTION廣播,讓應用能夠監控這些變更。

由於很多應用會註冊接收此廣播,因此單次網絡切換即會導致所有應用被喚醒並同時處理此廣播。

同理,應用可以註冊接收來自其他應用(例如相機)的隱式 ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 廣播。

當用戶使用相機應用拍攝照片時,這些應用即會被喚醒以處理廣播。

為緩解這些問題,Android N 應用了以下優化措施:

面向 Android N 開發的應用不會收到 CONNECTIVITY_ACTION 廣播,即使它們已有清單條目來請求接受這些事件的通知。

在前臺運行的應用如果使用BroadcastReceiver 請求接收通知,則仍可以在主線程中偵聽 CONNECTIVITY_CHANGE。

應用無法發送或接收 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO 廣播。此項優化會影響所有應用,而不僅僅是面向

Android N 的應用。

如果您的應用使用任何 Intent,您仍需要盡快移除它們的依賴關系,以正確適配 Android N 設備。 Android 框架提供多個解決方案來緩解對這些隱式廣播的需求。 例如,JobScheduler API

提供了壹個穩健可靠的機制來安排滿足指定條件(例如連入無限流量網絡)時所執行的網絡操作。 您甚至可以使用JobScheduler 來適應內容提供程序變化。

如需了解有關 Android N 中後臺優化以及如何改寫應用的詳細信息,請參閱後臺優化。

權限更改

Android N 做了壹些權限更改,這些更改可能會影響您的應用。

系統權限更改

為了提高私有文件的安全性,面向 Android N 或更高版本的應用私有目錄被限制訪問 (0700)。 此設置可防止私有文件的元數據泄漏,如它們的大小或存在。 此權限更改有多重副作用:

私有文件的文件權限不應再由所有者放寬,為使用 MODE_WORLD_READABLE 和/或 MODE_WORLD_WRITEABLE 而進行的此類嘗試將觸發SecurityException。

註:迄今為止,這種限制尚不能完全執行。 應用仍可能使用原生 API 或 File API 來修改它們的私有目錄權限。 但是,我們強烈反對放寬私有目錄的權限。

傳遞軟件包網域外的 file:// URI 可能給接收器留下無法訪問的路徑。 因此,嘗試傳遞 file:// URI 會觸發 FileUriExposedException。 分享私有文件內容的推薦方法是使用 FileProvider。

DownloadManager 不再按文件名分享私人存儲的文件。

舊版應用在訪問 COLUMN_LOCAL_FILENAME 時可能出現無法訪問的路徑。

面向 Android N 或更高版本的應用在嘗試訪問 COLUMN_LOCAL_FILENAME 時會觸發 SecurityException。

通過使用DownloadManager.Request.setDestinationInExternalFilesDir() 或 DownloadManager.Request.setDestinationInExternalPublicDir() 將下載位置設置為公***位置的舊版應用仍可以訪問 COLUMN_LOCAL_FILENAME 中的路徑,但是我們強烈反對使用這種方法。

訪問由 DownloadManager 公開的文件的首選方式是使用 ContentResolver.openFileDescriptor()。

應用間***享文件

對於面向 Android N 的應用,Android 框架執行的 StrictMode API

政策禁止向您的應用外公開 file:// URI。 如果壹項包含文件 URI 的 Intent 離開您的應用,應用失敗,並出現 FileUriExposedException 異常。

若要在應用間***享文件,您應發送壹項 content:// URI,並授予 URI 臨時訪問權限。 進行此授權的最簡單方式是使用 FileProvider 類。

如需有關權限和***享文件的更多信息,請參閱***享文件。

無障礙改進

為提高平臺對於視力不佳或視力受損用戶的可用性,Android N 做出了壹些更改。這些更改壹般並不要求更改您的應用代碼,不過您應仔細檢查並使用您的應用測試這些功能,以評估它們對用戶體驗的潛在影響。

  • 上一篇:為什麽河南中小企業產權交易被叫停?
  • 下一篇:牧草網的特征系統
  • copyright 2024編程學習大全網