安卓性能優(yōu)化電量-wakelock和jobscheduler_第1頁
安卓性能優(yōu)化電量-wakelock和jobscheduler_第2頁
安卓性能優(yōu)化電量-wakelock和jobscheduler_第3頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

2、個(gè)方式是在布局文件中使用 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) 任務(wù) - 保持設(shè)備喚醒狀態(tài)API 17 開始,F(xiàn)ULL_WAKE_LOCK 將被棄API 17 開始,F(xiàn)ULL_WAKE_L

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

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

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

6、rtotheent(context, 當(dāng)ent()來publicclassentServiceentService NOTIFICATION_ID = publicicprivateNotificationManagermNotificationManager; pat.Builder builder;uses-.WAKE_LOCKowerManager = (WakeLockwakeLock注意:在使用該類的時(shí)候,必須保證 acquire 和 release 是成對(duì)出現(xiàn)的.的一些問題坑點(diǎn)及解決.的一些問題坑點(diǎn)及解決AlarmService 來執(zhí)行輪詢。因?yàn)殡m然系統(tǒng)讓機(jī)器休眠,節(jié)省電量,但并不

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論