他們都沒告訴你適配 Android N 需要注意什麼
Android N 這次的新特性包括多視窗的支援、通知欄支援直接回復訊息、對部分廣播的後臺限制、網路資料節省開關等,並不多,也有很多翻譯文章已經介紹。
這裡主要分享對 Android N 的適配大家可能要注意什麼。
文末雜談帶阿里騰訊保障員工買房相關的福利介紹。
還記得 6.0 對 Apache Http 庫的廢除導致的應用崩潰嗎?
還記得 6.0 中 MAC id 始終返回為空導致的唯一 id 混合生成演算法大幅失效嗎?
1. Android 中 Java 的實現向 OpenJDK 8 遷移
Android 是站在 Linux 和 Java 肩膀上快速成長的,在執行時依賴 Oracle JDK,早在 2010 年甲骨文就起訴谷歌侵權 Java。在 N 中 Google 採用 OpenJDK 8 作為 Java 的實現,在 Java 實現上的一些差別可能導致應用出問題。如:
(1) ArrayList 實現中的私有屬性 array 被移除
反射使用該屬性的需要注意下。
(2) 隨機數種子呼叫可能出錯
Crypto 安全提供商在 OpenJDK 中不提供,而它在大家呼叫 SecureRandom.setSeed() 設定隨機種子時會用到,OpenJDK 中需要透過 SecretKeySpec 去直接載入原始金鑰或者使用真正的金鑰匯出函式。
有了解 OpenJDK 8 與 Oracle JDK 更多實現差別的歡迎留言。
PS:
(1) 記得 2014 年 InfoQ 大會上 Oracle 的人介紹 Java 8 的特性,當時還在想 Android 現在依賴 JDK6.0 什麼時候才能到 8,現在終於等到了這一天,可惜不是你..
(2) Kotlin 還有機會嗎?
2. JNI 中不允許呼叫非公有 API
JNI 中不允許呼叫非公有 API,由於名稱空間的變化,在 Android N 上執行會崩潰,需要切換到對應公有 API。
3. “老人機的適配”
Android N 允許使用者設定顯示密度,有點像老人機模式。需要測試 App 在 sw320dp 密度下顯示是否正常,及配置變更後應用是否會有異常。
4. 後臺最佳化——三個廣播被禁止監聽或傳送
(1) CONNECTIVITY_CHANGE 廣播
對 targetVersion 設定為 Android N 的 App,在後臺時不再能接收到 CONNECTIVITY_CHANGE 廣播,前臺不影響。
(2) ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 廣播
所有執行在 Android N 上的 App 不能傳送或是接收新增圖片(ACTION_NEW_PICTURE)和新增影片(ACTION_NEW_VIDEO) 的廣播。
5. 許可權改動
(1) GET_ACCOUNTS 許可權被廢棄
對 targetVersion 設定為 Android N 的 App,GET_ACCOUNTS 許可權被廢棄。
(2) 增加 ACTION_OPEN_EXTERNAL_DIRECTORY 許可權
這個感覺就是對部儲存裝置寫許可權的保護,需要使用者同意,說不定以後就慢慢廢棄 WRITE_EXTERNAL_STORAGE 許可權了。
6. 更嚴格的 Doze 模式
大家知道在 Android 6.0 中,在手機關屏且靜止時,Doze 模式透過推遲 CPU 和網路操作延長底池壽命。而 Android N 則在手機關屏時就會一定程度限制 CPU 和網路操作,進入 Doze 模式一段時間後進一步限制 WakeLock、Alarm、GPS 和 Wi-Fi 掃描等,做好迎接休眠狀態下更多功能受限導致的 bug 吧,哈哈。
7. 自帶 ICU4J 庫的子集
更方便 App 的全球化
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2459/viewspace-2816186/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼樣的雲管平臺才是企業需要的?他們的真正訴求是什麼?
- 一文告訴你什麼是NAT,為什麼需要NAT
- 告訴你製作直播平臺都需要什麼硬體和軟體的乾貨文
- 面試中圖論都考什麼?這篇文章告訴你!面試圖論
- 7個理由告訴你為什麼需要六西格瑪
- 為什麼你們都這麼厲害。。。。
- 不藏了,這些Java反射用法總結都告訴你們Java反射
- 你們用的是什麼電腦,都什麼配置
- Android適配Android
- 告訴你什麼是Pixelmator Pro for Mac!Mac
- Linux學習前要注意什麼?雲端計算都需要學什麼Linux
- 元宇宙是什麼?一文告訴你元宇宙需要什麼技術支撐元宇宙
- 讓 APISpace 告訴你什麼場景使用什麼APIAPI
- 為什麼需要銀行卡文字識別API?讓我來告訴你!API
- 如何做好兒童遊戲? 先了解他們需要什麼?遊戲
- Android適配: 拉伸適配的缺點Android
- 一張圖告訴你什麼是GraphQL?
- 一篇告訴你什麼是SpringSpring
- 【轉】kafka-告訴你什麼是kafkaKafka
- 從 testcafe 遷到 playwright 你需要注意什麼?
- 說到遊戲的文化適配,我們在聊什麼?遊戲
- [譯] 為什麼你的應用需要對各種尺寸螢幕做適配優化?優化
- 都在使用的快取,騰訊大牛告訴你他們是如何使用快取的快取
- 什麼都沒有找到!
- 用大白話告訴你什麼是Event LoopOOP
- 告訴你什麼是TestOps測試運維運維
- 一座島告訴你,什麼是智慧!
- 碼教授告訴你什麼事人工智慧人工智慧
- Android圖示適配Android
- android 螢幕適配Android
- android全面屏適配Android
- Android P 適配指南Android
- 讓機器學習告訴你,你的siri在想什麼!機器學習
- 建站之前需要注意什麼
- 使用HTTP需要注意什麼?HTTP
- 建站之前需要注意什麼?
- 當我們開發一個介面時需要注意些什麼
- Java,你告訴我 fail-fast 是什麼鬼?JavaAIAST