優(yōu)化性能時(shí)大多數(shù)時(shí)候討論的都是如何減少不必要的操作轴术,但是選擇何時(shí)去執(zhí)行某些操作同樣也很重要难衰。在第1季以及上一期的性能優(yōu)化之電量篇里面,我們有提到過(guò)移動(dòng)蜂窩模塊的電量消耗模型逗栽。為了避免我們的應(yīng)用程序過(guò)多的頻繁消耗電量盖袭,我們需要學(xué)習(xí)如何把后臺(tái)任務(wù)打包批量,并選擇一個(gè)合適的時(shí)機(jī)進(jìn)行觸發(fā)執(zhí)行彼宠。下圖是每個(gè)應(yīng)用程序各自執(zhí)行后臺(tái)任務(wù)導(dǎo)致的電量消耗示意圖:
因?yàn)橄裆厦婺菢幼鰰?huì)導(dǎo)致浪費(fèi)很多電量鳄虱,我們需要做的是把部分應(yīng)用的任務(wù)延遲處理,等到一定時(shí)機(jī)凭峡,這些任務(wù)一并進(jìn)行處理拙已。結(jié)果如下面的示意圖:
執(zhí)行延遲任務(wù),通常有下面三種方式:
1)AlarmManager
使用AlarmManager設(shè)置定時(shí)任務(wù)摧冀,可以選擇精確的間隔時(shí)間倍踪,也可以選擇非精確時(shí)間作為參數(shù)系宫。除非程序有很強(qiáng)烈的需要使用精確的定時(shí)喚醒,否者一定要避免使用他建车,我們應(yīng)該盡量使用非精確的方式扩借。
2)SyncAdapter
我們可以使用SyncAdapter為應(yīng)用添加設(shè)置賬戶(hù),這樣在手機(jī)設(shè)置的賬戶(hù)列表里面可以找到我們的應(yīng)用缤至。這種方式功能更多潮罪,但是實(shí)現(xiàn)起來(lái)比較復(fù)雜。我們可以從這里看到官方的培訓(xùn)課程:http://developer.android.com/training/sync-adapters/index.html
3)JobSchedulor
這是最簡(jiǎn)單高效的方法领斥,我們可以設(shè)置任務(wù)延遲的間隔嫉到,執(zhí)行條件,還可以增加重試機(jī)制戒突。