安卓性能優化電量-wakelock和jobscheduler_第1頁
安卓性能優化電量-wakelock和jobscheduler_第2頁
安卓性能優化電量-wakelock和jobscheduler_第3頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Android CPU 可以防止電池電量掉的快。在休眠過程中自定義的 Timer、Handler、Thread、Android CPU 可以防止電池電量掉的快。在休眠過程中自定義的 Timer、Handler、Thread、Service 等時持屏幕常亮,比如一 locks,。appFLAG_KEEP_SCREEN_ON flag,windowManager 好程序進回到前臺的的操作。如果確實需要手動清掉常亮的 flag,使用CPU 運erManager 這個系統服務的喚醒鎖(wake locks)特征來保持CPU 處于比如在Acitivity 中就沒必要用了。如果需要關閉屏幕,使用上述的另一

2、個方式是在布局文件中使用 android:keepScreenOn 屬性 HYPERLINK http:/s/ android:keepScreenOn = ” true “FLAG_KEEP_SCREEN_ON保持屏幕常最好的方式是在Activity 中使用FLAG_KEEP_SCREEN_ON 的Flagpublic class MainActivity extendivity protected void onCreate(Bundle savedInstane) 任務 - 保持設備喚醒狀態API 17 開始,FULL_WAKE_LOCK 將被棄API 17 開始,FULL_WAKE_L

3、OCK 將被棄用。應用應使FLAG_KEEP_SCREEN_ON標記屏鍵開關關開變關開變關開變變FLAG_KEEP_SCREEN_ON只有一種合理的使用場景,是在使用 服務在屏幕關閉情況holdCPU完成一些工作CPU休眠未來的某個時刻任務會停止,這不是 想要的。 (有的人可能認為我以前寫的 服務就沒掉過鏈子呀運行得挺好的,1.可能是你的任務時間比較短;2.CPU被 里面很多其他的 一直在喚醒狀態。)。下面是很多網友有同樣 :的方式是使用 WakefulBroadcastReceiver:使用廣播和 Service(典型entService)結合的方式可以讓你很好地管WakefulBroadc

4、astReceiver 是 BroadcastReceiver 的一種特例。它會為你的 APP 創建管理一個 PARTIAL_WAKE_LOCK 類型的 WakeLock。WakefulBroadcastReceiver 把工接給 service(通的方式是使用 WakefulBroadcastReceiver:使用廣播和 Service(典型entService)結合的方式可以讓你很好地管WakefulBroadcastReceiver 是 BroadcastReceiver 的一種特例。它會為你的 APP 創建管理一個 PARTIAL_WAKE_LOCK 類型的 WakeLock。Wake

5、fulBroadcastReceiver 把工接給 service(通常持有 WakeLock,設備很容易在任務未執行完前休眠。最終結果是你的應用不知道會在什使用 WakefulBroadcastReceiver 第一步就是在 Manifest receiverpublicclassMyWakefulReceiverextendsWakefulBroadcastReceiverpublicvoidonReceive(Contextent) /Starttheservice,ngthedeviceawakewhilethe/launching.Thisisent service = entive

6、rtotheent(context, 當ent()來publicclassentServiceentService NOTIFICATION_ID = publicicprivateNotificationManagermNotificationManager; pat.Builder builder;uses-.WAKE_LOCKowerManager = (WakeLockwakeLock注意:在使用該類的時候,必須保證 acquire 和 release 是成對出現的.的一些問題坑點及解決.的一些問題坑點及解決AlarmService 來執行輪詢。因為雖然系統讓機器休眠,節省電量,但并不

7、是完全的關機,系統有一部 分優先級很高的程序還是在執行的,比如鬧鐘,利用 AlarmService cpu 啟動,執行完畢再休眠。利用Socket 長連接實現后,Socket就被斷開。屏幕開啟的時候需進行重連,但每次看Log的時候又發現網絡是的后來才發現是cpu 休眠導致被斷開當你插上數據線看log 的時候網絡cpu的,坑。最后使用了PARTIAL_WAKE_LOCK,保持CPU不讓我非常郁悶的是,在調試 2 的時候,就發現,有時 Socket 會斷開,有時不會斷開,后來public MyentService() protected void onHandleent) Bundle extra

8、s =/DothetrequiresyourapptokeeptheCPU/Releasethewakelockprovidedbythe采用定時重復的 Service 開啟1、利用Android 自帶的定時器AlarmManager 實ent = new ent(mContext,ServiceTest.class); ent pi = 采用定時重復的 Service 開啟1、利用Android 自帶的定時器AlarmManager 實ent = new ent(mContext,ServiceTest.class); ent pi = ent.getService(mContext, en

9、t, AlarmManager alarm = (AlarmManager) if(alarm != null)/ 鬧鐘在系統睡眠狀態下會喚醒系統并執行提示功System.currentTimeMillis() + 1000, 2000, pi);/ 確切的時間鬧鐘/alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 2、該定時器可以啟動Service 服務、發送廣播、跳轉Activity,并且會在系統睡眠狀態下喚醒系統。所該方法不用獲取電源鎖電源鎖注意:19以上版本,setRepeating 中設置的頻繁只是建議值(6

10、.0 如果要精確一些的用setWindow或者setExact首先有兩個處理器一個叫Applicationsr A一個叫sor(BP(RTOS 算時會更高。另外LCD工作時功耗在100mA左右,WIFI也在100mA左右。一待機時,AP、LCD、WIFIAndroidWake Lock API的正常工作而長時AP進入休眠狀態,就會成為待機電。比如前段時間的某應用,比如現在仍然干著這事的某應用鍵邏輯的執行過程,就需要 Wake Lock 來保護。而一旦一個關鍵邏輯執行成功,就應程限通過代 AP 進入休眠狀態。但如果不 Android 設計者的意圖而的不會,有的機器的設置的充電時屏幕不變暗等等,把自己都搞暈了。其實搞明白這個休立立AlarmManagerAndroid RTC 的模塊,RTCRealTime是一個獨立的硬件時鐘可以在 U 休眠時正運行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論