部分 Wake Lock 使用過度

部分 Wake Lock 是 PowerManager API 中的一項機制,可以讓開發人員在關閉裝置螢幕 (無論是因為系統逾時還是因為使用者按下電源鍵) 之後繼續運行 CPU。應用程式會透過使用 PARTIAL_WAKE_LOCK 旗標呼叫 acquire(),或使用其他會取得 Wake Lock 的 API,取得部分 Wake Lock。過度使用部分 Wake Lock 會耗盡裝置電量,因為這會導致裝置無法進入低耗電狀態。部分 Wake Lock 應僅在必要時使用,並在不再需要時立即釋出。

如果應用程式過度使用部分 Wake Lock,您可以利用本頁的指南診斷並修正問題。

偵測問題

Android Vitals 可協助您找出應用程式使用部分 Wake Lock 過多的情況。

Android Vitals

當應用程式過度使用部分 Wake Lock 時,Android Vitals 會透過 Play 管理中心發出提醒,藉此改善應用程式效能。

如果所有部分 Wake Lock加總起來,在 24 小時內執行 2 小時以上,Android Vitals 就會將部分 Wake Lock 用量回報為「過多」。只有在應用程式於背景執行或執行前景服務時,Android Vitals 才會追蹤 Wake Lock 時間長度。目前,Android Vitals 會將 音訊位置資訊JobScheduler 使用者啟動的 API 建立的 Wake Lock,從 Wake Lock 計算中排除。

Android Vitals 的「部分 Wake Lock 停滯」資訊主頁會細分與應用程式相關聯的非豁免 Wake Lock 名稱,並顯示受影響的會話和持續時間。

如果所有裝置在 28 天內,有超過 5% 的應用程式工作階段發生過度部分 Wake Lock,可能會影響應用程式在 Google Play 的曝光率。

發現應用程式有過多部分 Wake Lock 後,接下來就要解決問題。

修正問題

由於喚醒鎖定會耗盡裝置電量,因此如有替代方案,請勿使用喚醒鎖定。請參閱「選擇適當的 API 來讓裝置保持喚醒狀態」文件,找出最適合您應用程式的解決方案。

如需使用 Wake Lock,請遵循 Wake Lock 的最佳做法,確保 Wake Lock 不會影響裝置效率。特別是,請務必釋出您取得的每個裝置,並盡快釋出鎖定。

即使您未明確取得 Wake Lock,應用程式也可能使用 Wake Lock。如果看到歸因於您不認識的應用程式的 Wake Lock,找出其他 API 建立的 Wake Lock可協助您找出可能建立這些鎖定的 API。

修正程式碼中的問題後,您可以使用本機 Wake Lock 偵錯工具驗證修正內容。

另請參閱