從android 6.0(api級別23),android介紹兩個節電功能,通過管理裝置沒有連線電源時應用的行為:休眠時減少電池消耗通過延遲背景cpu和網路活動時應用裝置是閒置很長一段時間。應用備用延緩背景網路活動應用程式的使用者最近沒有互動。
休眠和應用程式備份管理行為的應用程式執行在android 6.0或更高版。
如果使用者離開裝置不插電,靜止一段時間,螢幕關閉,裝置進入休眠模式。在打盹模式下,系統試圖節約電池通過限制應用程式訪問網路和cpu密集型服務。它還可以防止應用程式訪問網路和延緩他們的工作,同步和標準的警報。
定期,系統退出打瞌睡讓應用程式在一段短暫的時間內完成他們的延遲活動。在此維護視窗,系統所有未決同步執行,工作,和警報,允許應用程式訪問網路。
在每個維護視窗結束後,系統將再次進入打盹,暫停網路訪問和推遲就業,同步和報警。以下限制應用程式打瞌睡:隨著時間的推移,該系統排程維護視窗少頻繁,有助於減少電池消耗在長期不活動的情況下,當裝置沒有連線到充電器。
一旦使用者通過移動它,把在螢幕上,或連線充電器喚醒器件,系統退出打盹和所有的應用程式恢復正常活動。
① 網路訪問是暫停
② 系統忽略wakelock鎖(powermanager內部類)
③ 遞延到下乙個維護視窗的標準alarmmanager警報(包括setexact()和setwindow())。
a) 如果要在休眠時設定乙個警告需要使用setandallowwhileidle() or setexactandallowwhileidle()
b) 系統進入休眠前setalarmclock()將繼續進行
④ 當系統沒有進行wifi掃瞄時
⑤ 系統不允許同步介面卡執行
⑥ 系統不允許呼叫各種系統框架jobscheduler
在android6.0以上可能影響alarmmanager警告和計數器活動。所以在android6.0以上alarmmanager提供了setandallowwhileidle()和setexactandallowwhileidle()方法發動應用。
當使用者不積極使用它應用備用允許系統確定應用程式空閒。系統在一段時間內的時間和沒有適用下列條件使得這個不觸控應用程式:
① 使用者顯式地啟動應用程式
② 他應用過程目前在前台(作為乙個活動或前台服務,或使用另乙個活動或前台服務)。
③ 使用者看到的應用程式生成乙個通知在鎖定螢幕或通知托盤。
當使用者裝置插入電源,系統從待機狀態,發布應用程式允許他們自由訪問網路和執行任何懸而未決的工作和同步。如果裝置是閒置很長一段時間,系統允許空閒應用網路訪問一天一次。
使用者可以手動配置的白名單設定》 >電池電池優化。另外,系統提供了應用程式的方式要求使用者白名單。
① 應用程式可以直接開啟on_ignore_battery_optimization_settings意圖採取使用者的電池優化,在那裡他們可以新增應用程式。
② 應用程式持有request_ignore_battery_optimizations許可可以觸發系統對話方塊讓使用者直接將應用程式新增到白名單,不用設定。應用發射action_request_ignore_battery_optimizations意圖觸發對話方塊。
③ 使用者可以根據需要手動從白名單中刪除應用程式。
在這之前之前要求使用者將應用程式新增到白名單,確保應用程式匹配白名單的可接受的用例
注:谷歌玩政策禁止應用程式請求直接豁免電源管理特性在android 6.0 +(打瞌睡和應用備用),除非應用程式的核心功能是不利影響
確保為你的使用者乙個良好的經驗,你應該測試你的應用在打瞌睡,應用備用。
① 硬體裝置或虛擬裝置配置乙個android 6.0(api級別23)或更高的系統映像。
② 將裝置連線到您的開發機器和安裝應用程式。
③ 關閉裝置的螢幕。(應用程式仍然是活躍的。)
④ 讓系統迴圈打盹模式通過執行以下命令:
a) $ adb shell dumpsys batteryunplug
b) $ adb shell dumpsys deviceidlestep
⑤ 你可能需要不止一次執行第二個命令。重複,直到空閒的裝置狀態改變。
⑥ 觀察你的應用程式的行為在你啟用裝置,確保應用程式打瞌睡或恢復裝置出口時正確
① 硬體裝置或虛擬裝置配置乙個android 6.0(api級別23)或更高的系統映像。
② 將裝置連線到您的開發機器和安裝應用程式。
③ 執行您的應用程式,讓它活躍。
④ 迫使應用程式待機模式通過執行以下命令:
a) $ adb shell dumpsys batteryunplug
b) $ adb shell am set-inactivetrue
⑤ 模擬清醒你的應用程式使用以下命令:
a) $ adb shell am set-inactivefalse
b) $ adb shell am get-inactive
⑥ 觀察醒來後您的應用程式的行為。確保應用程式從待機模式恢復正常。特別是,你應該檢查一下你的應用程式的宣告和後台作業繼續按預期。3
下表強調了可接受的請求或在電池優化用例異常白名單。一般來說,應用程式不應該在白名單,除非打瞌睡或應用備用打破這個應用程式的核心功能或應用程式有乙個技術原因不能用gcm高優先順序訊息。
type
use-case
can use gcm?
whitelisting acceptable?
(白名單可接受)
notes
yes, using gcm
not acceptable
yes, but is not using gcm high-priority messages.(但不是用gcm高優先順序訊息。)
acceptable
acceptable
acceptable
not acceptable
Android 6 0新特性之 許可權管理
android 6.0中增加了 執行時permissions,就是說可以在執行時判斷有無許可權和獲取許可權,讓使用者同意即可。在之前的版本都是安裝的時候就會要使用者同意各種許可權,現在是在用的時候,回去問使用者同意。下面介紹一下我們應用在適配6.0的時候,需要做哪些事情吧,許可權新增 這個和之前的做...
Android 6 0新特性之Doze模式
doze模式可以極大幅度延長電池的使用壽命。我將從程式設計時的一些注意事項入手講解。1.什麼是doze模式 如果該裝置未插接電源,處於靜止狀態 android7.0中刪除這一條件 且螢幕關閉了一段時間之後就會進入到doze模式。在doze模式下,系統會對cpu,網路,alarm等活動進行限制,從而延...
android6 0增加的特性
北京時間9月30日凌晨在美國舊金山舉行2015年秋季新品發布會。在發布會上代號為 marshmallow 棉花糖 的安卓6.0系統正式推出。新系統的整體設計風格依然保持扁平化的meterialdesign風格。android6.0在對軟體體驗與執行效能上進行了大幅度的優化。安卓許可權系統被重新設計了...