Android 功耗(12)---省電續航-相互喚醒
省電續航-相互喚醒
相互喚醒現象描述
安裝100個APP,不小心點開了一個喚醒型別的APP,過一會兒,後臺偷偷自啟動了30~40個APP。
怪不得雷布斯之前說國內的應用市場環境太亂了,很多情況下使用者都把耗電歸結於Android系統就是比IOS不給力、電池low、這個ODM廠商的系統真耗電。
相互喚醒型別APP
01百度系APP家族:
02阿里系APP家族:
03騰訊系APP家族:
04個推系APP家族:
05友盟系APP家族:
06各種推送服務型別的APP
這是一個很有趣的“葫蘆娃”現象,舉個栗子,不小心點開了上述家族的任意一個應用,手機亮屏解鎖,這時被開啟的葫蘆娃,
他會馬上叫醒家族中的所有葫蘆娃,“大家快後臺啟動起來啊,待會我們要在通知欄發訊息,打廣告了”。
可以在設定中的“正在執行的應用列表”檢視,一般會發現好多應用啟動了。
相互喚醒帶來的危害
01同時啟動家族內的所有APP的動作,會因後臺啟動數量過多,帶來短暫造成系統卡頓; 02過多且非使用者主動開啟的後臺應用,對系統記憶體和續航能力都是一種流氓的慢性蠶食。 03使用者通知欄更是變成各種商業的博弈,個別後臺推送訊息還呼叫提示音進行廣告提示,巴不得使用者24小時使用。其實任何的圖形和聲音呼叫都是需要費電的。 04若缺乏自啟動管理,每次使用者開機不開啟任何應用,後臺也是會賣力的啟動任何可以後臺啟動的應用 05待機下快速進入深度休眠模式因相互喚醒機制變得很困難,系統深度休眠模式的待機電流在5mA左右,若是一款不裝任何應用的手機,待機時
間按天算都是小case
總之一句話,佔記憶體費電。
相互喚醒的啟動方式
方式一:
系統廣播(開機、解鎖)->啟動推送服務pushService,即第三方APP永遠不被殺死的SDK技術->將所有註冊相同推送服務的家族系APP執行後
臺啟動;
方式二:
通過AlamManagerService定時啟動pushService->將所有註冊相同推送服務的家族系APP執行後臺啟動;
方式三:
ContentProvide讀取資料啟動app->啟動推送服務pushService,即第三方APP永遠不被殺死的SDK技術->將所有註冊相同推送服務的家族系APP執行後臺啟動;
方式四:
偽裝Activity或前臺程序啟動app->啟動推送服務pushService,即第三方APP永遠不被殺死的SDK技術->將所有註冊相同推送服務的
家族系APP執行後臺啟動;
上述相同點在於推送SDK技術完成相互喚醒操作,主要是由於官方的Google本身被牆,品牌廠商不得已閹割了Google服務,導致無法想IOS那樣APNS技術管理推送訊息進行統一管理,導致國內的應用市場環境趨利性,一味的根據自己的利益,後臺強行推送自己的廣告訊息給無辜的使用者。
解決方法:
1.自啟動管理:在開機的時候就限制應用的後臺偷偷自啟動行為;PS:經過多年的手機廠商和流氓應用的鬥智鬥勇,目前市面上品牌手機自帶的自啟動管理可以很好的限制程式自啟動,當然以前的純粹禁用開機廣播元件方法在相互喚醒已經流氓應用
失效了,當然解決方案也是有的,畢竟道高一尺,魔高一丈,大家都是相互進步的。
2.後臺清理:主要利用APP休眠技術防止應用的後臺啟動和相互喚醒,這裡的技術實現也是很巧妙的;
3.通知管理:將不希望在通知欄出現廣告資訊的應用遮蔽顯示,這裡主要是通過許可權管理的方式禁用流氓應用的訊息顯示功能;
4.Android設定–> WLAN–>點選選單鍵選擇高階–>休眠狀態下保持WLAN連線的下拉列表{始終、僅限充電時、從不(會增加資料流量)},如果設定不為始終,那麼我們鎖屏休眠後,程式將會處於無網路狀態,相應的app使用者會一直處於離線模式,不僅僅更省電,還可以進一步限制應用相互喚醒行為;
上述相同點在於推送SDK技術完成相互喚醒操作,主要是由於官方的Google本身被牆,品牌廠商不得已閹割了Google服務,導致無法想IOS那樣APNS技術管理推送訊息進行統一管理,導致國內的應用市場環境趨利性,一味的根據自己的利益,後臺強行推送自己的廣告訊息給無辜的使用者。
解決方法:
1.自啟動管理:在開機的時候就限制應用的後臺偷偷自啟動行為;PS:經過多年的手機廠商和流氓應用的鬥智鬥勇,目前市面上品牌手機自帶的自啟動管理可以很好的限制程式自啟動,當然以前的純粹禁用開機廣播元件方法在相互喚醒已經流氓應用
2.後臺清理:主要利用APP休眠技術防止應用的後臺啟動和相互喚醒,這裡的技術實現也是很巧妙的;
3.通知管理:將不希望在通知欄出現廣告資訊的應用遮蔽顯示,這裡主要是通過許可權管理的方式禁用流氓應用的訊息顯示功能;
4.Android設定–> WLAN–>點選選單鍵選擇高階–>休眠狀態下保持WLAN連線的下拉列表{始終、僅限充電時、從不(會增加資料流量)},如果設定不為始終,那麼我們鎖屏休眠後,程式將會處於無網路狀態,相應的app使用者會一直處於
離線模式,不僅僅更省電,還可以進一步限制應用相互喚醒行為;