優化性能時大多數時候討論的都是如何減少不必要的操作,但是選擇何時去執行某些操作同樣也很重要。在第1季以及上一期的性能優化之電量篇里面,我們有提到過移動蜂窩模塊的電量消耗模型。為了避免我們的應用程序過多的頻繁消耗電量,我們需要學習如何把后臺任務打包批量,并選擇一個合適的時機進行觸發執行。下圖是每個應用程序各自執行后臺任務導致的電量消耗示意圖:
因為像上面那樣做會導致浪費很多電量,我們需要做的是把部分應用的任務延遲處理,等到一定時機,這些任務一并進行處理。結果如下面的示意圖:
執行延遲任務,通常有下面三種方式:
1)AlarmManager
使用AlarmManager設置定時任務,可以選擇精確的間隔時間,也可以選擇非精確時間作為參數。除非程序有很強烈的需要使用精確的定時喚醒,否者一定要避免使用他,我們應該盡量使用非精確的方式。
2)SyncAdapter
我們可以使用SyncAdapter為應用添加設置賬戶,這樣在手機設置的賬戶列表里面可以找到我們的應用。這種方式功能更多,但是實現起來比較復雜。我們可以從這里看到官方的培訓課程:http://developer.android.com/training/sync-adapters/index.html
3)JobSchedulor
這是最簡單高效的方法,我們可以設置任務延遲的間隔,執行條件,還可以增加重試機制。