低電耗模式
會對鬧鈴、GPS 和 Wi-Fi 掃描 産生限制.
可參考Optimizing for Doze and App Standby
使用GCM來發送和接受消息
背景優化
Android N 删除了三項隐式廣播,隐式廣播會在背景頻繁啟動已注冊偵聽這些廣播的應用。 删除這些廣播可以顯著提升裝置性能和使用者體驗.
偵聽網絡變化的主線程廣播改為: CONNECTIVITY_CHANGE。
對所有應用都無法 發送和接受 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO .
可以使用JobScheduler API ,更多參考背景優化
權限變更
旨在提高私有檔案的安全性,
- 仍然可以使用原生 API 或 File API 來修改私有目錄,但是不建議使用.
- 使用
,可能會導緻接受者無法通路該路徑 ,需要使用file:// URI
FileProvider
-
不再按檔案名分享私人存儲的檔案,需要使用DownloadManager
ContentResolver.openFileDescriptor()
參考閱讀:Android7.0須知–應用間共享檔案(FileProvider)
檔案共享
若要在應用間共享檔案,需要發送一項 content:// URI,最好也是使用 FileProvider類
NDK平台庫
Android N 做了一些命名空間更改,阻止加載非公開API,會出現一些常見錯誤
如,UnsatisfiedLinkError
典型修複方法,
1. 使用标準 JNI 函數來替代使用 libandroid_runtime.so 中的 getJavaVM 和 getJNIEnv
2. 使用公開 alternative __system_property_get 來替代使用 libcutils.so 中的 property_get 符号
3. 使用應用本地版本來替代使用 libcrypto.so 中的 SSL_ctrl 符号
注解保留
Android N 在注解可見性被忽略時修複錯誤,
這些注解包括:
1. VISIBILITY_BUILD:僅應編譯時可見
2. VISIBILITY_SYSTEM:運作時應可見,但僅限基本系統
其他重要事項
如果應用是針對更低
API
級别開發而運作在
Android N
上,那麼在更改顯示尺寸,系統将終止此應用程序.
Android N 上的應用應能夠正常處理配置變更,包括字型大小的變更
許多平台 API 現在開始檢查在 Binder 事務間發送的大負載,ps,
Activity.onSaveInstanceState()
存儲過多資料時,引發
RuntimeException
View 釋出 Runnable 任務,在 View 附加到視窗之前,Runnable 任務不會執行
DELETE_PACKAGES 權限的變更,應用嘗試删除一個軟體包,但另一項應用已經安裝了這個軟體包,則系統可能要求使用者确認
參考:Android 7.0牛軋糖