天天看點

Android7.0适配所需要注意的一些事項

低電耗模式

會對鬧鈴、GPS 和 Wi-Fi 掃描 産生限制.

可參考Optimizing for Doze and App Standby

使用GCM來發送和接受消息

背景優化

Android N 删除了三項隐式廣播,隐式廣播會在背景頻繁啟動已注冊偵聽這些廣播的應用。 删除這些廣播可以顯著提升裝置性能和使用者體驗.

偵聽網絡變化的主線程廣播改為: CONNECTIVITY_CHANGE。

對所有應用都無法 發送和接受 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO .

可以使用JobScheduler API ,更多參考背景優化

權限變更

旨在提高私有檔案的安全性,

  1. 仍然可以使用原生 API 或 File API 來修改私有目錄,但是不建議使用.
  2. 使用

    file:// URI

    ,可能會導緻接受者無法通路該路徑 ,需要使用

    FileProvider

  3. 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牛軋糖