鵝廠專家詳解Android N適配要點 | 騰訊優測乾貨分享

1.Doze模式更增強大
該模式是在Android6.0中引入的,當用戶設備未插電源、處於靜止狀態屏幕關閉時,該模式會推遲CPU和網絡活動,從而增長電池壽命。
在Android_N中對這種模式進行了增強,當設備處於充電狀態且屏幕已關閉必定時間後,設備會進入打盹模式並應用第一部分限制:關閉應用網絡訪問、推遲做業和同步。若是進入打盹模式後設備處於靜止狀態達到必定時間,系統則會對 PowerManager.WakeLock、AlarmManager 鬧鈴、GPS 和 Wi-Fi 掃描應用餘下的打盹限制。不管是應用部分仍是所有打盹限制,系統都會喚醒設備以提供簡短的維護時間窗口,在此窗口期間,應用程序能夠訪問網絡並執行任何被推遲的做業/同步。android

這種狀況倒也好辦,要麼就是讓用戶將本身的的應用加入白名單,
或則在代碼中使用Intent的方式跳轉到設置頁面,讓用戶去設置;
Google推薦咱們使用Schedule的方式來管理咱們的任務,咱們能夠設置讓這些任務在特定的時候纔去執行,好比將任務設置運行在充電或則無限制的時候運行,以下就是加入一個網絡無限制的任務:
圖片描述
Google在API 23中爲咱們加入了一個新的Action,咱們能夠經過調用這個Action跳轉到指定頁面指導用戶設置白名單:
圖片描述
圖片描述
在Doze模式中還有一種Standby的模式,這個模式相對更嚴格,若是對於及時通訊的軟件在未加入白名單的狀況下,處於該模式不能收到及時的提示,必須從該模式恢復才能收到,所以須要特別注意,咱們能夠從google的官方文檔當中查到進入該模式的ADB指令:
圖片描述
將第二條指令中的true改成false便可恢復,這個便於開發和測試。
2.禁止一些廣播的行爲
在以前的Android系統中,咱們開啓一個監聽事件的廣播後,程序在事件觸發的時候就會觸發咱們的廣播,並且不值一個程序會收到通知,因此在Android_N中對CONNECTIVITY_ACTION、ACTION_NEW_PICTURE和ACTION_NEW_VIDEO三個廣播進行了處理。
a) 面向 Android N 開發的應用不會收到 CONNECTIVITY_ACTION 廣播,即便它們已有清單條目來請求接受這些事件的通知。在前臺運行的應用若是使用 BroadcastReceiver 請求接收通知,則仍能夠在主線程中偵聽 CONNECTIVITY_CHANGE。
b) 應用沒法發送或接收 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO 廣播。此項優化會影響全部應用,而不只僅是面向 Android N 的應用。
將來的 Android 版本還可能會棄用其餘隱式廣播以及未綁定的後臺服務。有鑑於此,您應避免依賴在清單文件中聲明的接收器來偵聽隱式廣播或刪除此依賴關係,以及避免或刪除對後臺服務的依賴關係。
3.權限機制的更改
Android N 作了一些權限更改,包括用戶賬戶權限和向外部存儲設備寫入信息的新權限,這些更改可能會影響您的應用。下面概要列出了預覽版中已發生更改的權限。
GET_ACCOUNTS(已棄用)
GET_ACCOUNTS 權限現已棄用。對於面向 Android N 的應用,系統將忽略此權限。
下面咱們就來着重的談一談關於這個權限修改,從Android6.0開始Google引入了權限動態申請的機制,在以前的版本中,咱們申請權限都是一次性在應用的Manifest文件中將咱們程序所須要的權限,在用戶安裝App的時候一塊兒向用戶申請,這樣會形成要麼用戶沒有仔細看就直接贊成安裝了,爲後期帶來安全隱患,要麼用戶不一樣意應用程序沒法安裝,可是對於一個app來講,可能有的權限不是咱們必須的,所以Google在Android6.0中就引入了動態申請權限的機制。
該機制面向於6.0以上的版本,而且在6.0中將targetVersion指定爲23,否者效果和以前的版本同樣。
咱們就拿<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />這個向外部存儲卡進行寫操做的權限來舉例。
當咱們須要向外部存儲卡進行寫操做的時候,咱們須要遵循以下的步驟:
a).查詢是否具備該權限:
圖片描述
這裏面須要注意的是,爲了向下兼容,ContextCompat和ActivityCompat的導入的是support.v4包下的
圖片描述
hasPerMission就是查詢的返回值,若是返回true就表示咱們已經具備了權限,能夠直接進行操做,若是是false的話,咱們就須要向用戶動態的申請寫的權限了,以下:
圖片描述
圖片描述
這個函數相似於咱們經常使用的startActivityForResult的方法,它會觸發一個回調,其中REQUEST_WRITE_CODE就是咱們自定義的請求碼。
b).處理請求的回調
圖片描述安全

全文連接:
http://bbs.utest.qq.com/?p=760&uid=1a87084a012d4fe59dd416e3ce2228be網絡

騰訊優測(http://utest.qq.com)是專業的移動雲測試平臺,提供【兼容性自動化測試】【雲手機】【漏洞檢測】等多維度測試服務。app

相關文章
相關標籤/搜索