用電如倒水? 從 Wakelock 找出問題

手機在使用時,CPU 運行和亮著屏幕也會耗電。不用手機將屏幕關上後,手機的 CPU 還保持在運作狀態。再過一段時間,Android 系統就會進入休眠狀態,這時候應是手機耗電最小的時間。所以在晚上睡覺時,手機放在一角沒有使用,耗電量亦應是最小的。

Wakelock喚醒手機
不過,若有一些 Apps 向系統發送 Wakelock喚醒手機,手機就會由休眠狀態醒過來。雖然手機屏幕沒有開著,但手機郤是在運行,也會造成耗電。這就是電量不知不覺流走的原因。

Wakelock Battery Drain 耗電

看看上面的圖片,這是手機設定內電池的詳細記綠,可以看到屏幕大部份時段都是關上的,但系統郤不斷有喚醒 Wakelock;再對照上方的電量,可以看到電量在屏幕關上時還不斷下跌,在 7小時已不見了 50% 電量。

為什麼 Apps 會 Wakelock?
Wakelock 是 Android 本身的運作機制,以讓 App 可喚醒手機進行操作。但有部份 Apps 可能在編寫程式出了問題,又或因應它的功能需求,而要 Wakelock 手機。例如之前有即時通訊 App,因沒有採用 Push 機制,而是由 App 每隔一段短時間從 Server 讀取資料,以達致 “即時” 效果,這樣就會造成很大量的 Wakelock,使手機長時間保留在運作狀態。

那些 Apps 是 Wakelocks 最大疑兇?
Wakelock 不一定是問題,因 Wakelock 本身使用很小電量。但若 Wakelock 後,手機還會有其他運作,又或是有極大量的 Wakelock,這就會造成耗電問題。所以,一些需要不斷更新資料的 Apps,例如天氣, 新聞, 即時通訊, 社交, 情景 Apps 也可能是大量 Wakelocks 的元兇。

找出 Wakelocks Apps
在手機的電池記綠只會顯示電池使用的情況,並不會標記那些 Apps 發出 Wakelocks,所以要另行安裝 Apps 去列出 Wakelocks Apps。有兩個較常用的 Apps,提供這項功能。不用同時安裝兩個,只選一個安裝使足夠。

BetterBatteryStats
BetterBatteryStats (BBS) 是一個十分詳細專業的電池用量統計 Apps,內裏可選擇 Partial Wakelocks 就可列出各個 Wakelocks 的詳情,你可選擇從 Unplug, Boot 機顯示資料。(而Kernal Wakelock是系統東西,不用理會)

BetterBatteryStats 在 Play Store 是付費Apps,但可以在 XDA 免費下載 APK 檔案。
http://forum.xda-developers.com/showthread.php?t=1179809

下圖看到 Facebook 的 Wakelock 相對其他 App 不算太多,而耗電亦不多。
BetterBatteryStatsBetterBatteryStats Better Battery Stats

GSam Battery Monitor
GSam Battery Monitor 亦可列出手機的 Wakelocks 情況,界面較清晰易明。只要開啟 GSam,在主畫面點按 App Usage,再在內裏頁面上方位置,選擇 View Time Held Awake 或 View Num Times Waking Device 就可檢視 Wakelock 所佔時間和次數。

GSam 可在 Play Store 免費下載
https://play.google.com/store/apps/details?id=com.gsamlabs.bbm

GSam Battery Monitor

從下面左圖可以看到 Setting Profiles Wakelock 次數達到 105 次,較其他 App 高了很多!

GSam Battery MonitorGSam Battery Monitor Wakelock

睡覺時監察 Wakelock
由於日間時會經常使用手機,很難找出 Wakelock 問題,所以最理想做法是在睡覺時進行。睡覺前,將手機充電至 100% 後拔除充電電源,跟著睡覺去。

檢視結果, 調整設定
第二朝起床,你可以先從手機 “設定 > 電池 > 詳細記綠” 的圖表內,看看會否有大量的 Wakelock 出現。跟著就可開啟上述的 BBS 或者 GSam 查看那些 Apps 帶來最多的 Wakelocks。從 BBS 或 GSam 的結果中,你可以逐一想想這些 Apps 為什麼會要 Wakelock?若果 Apps 是沒有用但又不斷 Wakelock,那就刪除吧!

部份 Apps 是要定時更新的,例如新聞天氣, 通訊, RSS Reader。你可以調整 App 內設定 將更新的間距增長,甚至將它轉為手動更新。例如 Facebook 就可以選擇 30分鐘, 1小時, 2小時, 4小時, 或從不更新。

若你有安裝一些情景 Apps,例如 Tasker, Locale, Setting Profiles,你可查看會否是觸發條件太緊太密,讓手機不斷切換情景。有些極端情況是情景 App 的設定,跟手機系統設定相違背,這樣兩者就會互相觸發造成耗電!

不要苛求, 總會有 Wakelock
要找出 Wakelock 元兇需要花點時間,逐一就有問題的 App 查看並調整設定,而作出改動後,跟著到第二天再查看成果。當手機調整理想,一晚 8小時用約 10-12% 電量是有可能的。下圖看到,撇除起初屏幕開著的那小段時間,手機在約 6小時內也只是用了 10% 左右的電量,Wakelock 亦沒有太多,情況也很理想。

Battery Wakelock 用電

手機安裝了不同的 Apps,或多或少也會帶來 Wakelocks 和用電,你不可能放棄所有 Apps 換取電量,那智能手機就變得沒意義。不要苛求晚上睡覺時,手機是零 Wakelock 呢!若對電量沒有帶來大的影響,那就由得它吧!

發佈留言