android 如何使用Wake Lock來節電?

2021-08-26 22:25:43 字數 703 閱讀 7534

出處:

一樓:二樓:

如果一開始就對android手機的硬體架構有一定的了解,設計出的應用程式通常不會成為待機電池殺手,而要設計出正確的通訊機制與通訊協議也並不困難。但如果不去了解而盲目設計,可就沒準了。

android為了確保應用程式中關鍵**的正確執行,提供了wake lock的api,使得應用程式有許可權通過**阻止ap進入休眠狀態。但如果不領會android設計者的意圖而濫用wake lock api,為了自身程式在後台的正常工作而長時間阻止ap進入休眠狀態,就會成為待機電池殺手。比如前段時間的某應用,比如現在仍然幹著這事的某應用。

首先,完全沒必要擔心ap休眠會導致收不到訊息推送。通訊協議棧執行於bp,一旦收到資料報,bp會將ap喚醒,喚醒的時間足夠ap執行**完成對收到的資料報的處理過程。其它的如connectivity事件觸發時ap同樣會被喚醒。那麼唯一的問題就是程式如何執行向伺服器傳送心跳包的邏輯。你顯然不能靠ap來做心跳計時。android提供的alarm manager就是來解決這個問題的。alarm應該是bp計時(或其它某個帶石英鐘的晶元,不太確定,但絕對不是ap),觸發時喚醒ap執行程式**。那麼wake lock api有啥用呢?比如心跳包從請求到應答,比如斷線重連重新登陸這些關鍵邏輯的執行過程,就需要wake lock來保護。而一旦乙個關鍵邏輯執行成功,就應該立即釋放掉wake lock了。兩次心跳請求間隔5到10分鐘,基本不會怎麼耗電。除非網路不穩定,頻繁斷線重連,那種情況辦法不多。

Android如何使用API

本文針對android 開發如何使用 api文件進行一些經驗分享。1 為什麼需要掌握api 的使用。也許你需要完成乙個功能時很多時候你在網上google 一番,因為很可能找到有用的 片段,甚至不用關心具體實現的原理就可以直接拿來用。你可能遇到過搜出來的結果不太令人滿意,尤其是你需要完成的功能比較新穎...

Android如何使用API

本文針對android開發如何使用api文件進行一些經驗分享。1 為什麼需要掌握api的使用。也許你需要完成乙個功能時很多時候你在網上google一番,因為很可能找到有用的 片段,甚至不用關心具體實現的原理就可以直接拿來用。你可能遇到過搜出來的結果不太令人滿意,尤其是你需要完成的功能比較新穎,dem...

Android開發如何使用JNA

2.在非安卓的平台上,一般我們直接使用這兩個 jar 包就可以輕鬆使用 jna 並進行安卓開發了。在安卓上由於這兩個 jar 包預設沒有對應安卓版本的 libjnidispatch.so 檔案,因此我們需要從 jna master 中提取該檔案並對 jna.jar 檔案進行改造,或者使用 jna m...