標籤:android 耗時任務 handler looper intentservice
如果你看到上一篇android耗時任務_HandlerThread中所提到的BackService類了的話,那麼你肯定有一個衝動,就是把它封裝起來方便使用。
別急,Android SDK早就已經為我們提供了和那個BackService基本相同的類——IntentService。因為IntentService和BackService基本相同,所以源碼我就不貼了。
先來看一下一個簡單的例子:
public class AsyncService extends IntentService {public AsyncService() {super("AsyncService");}@Overrideprotected void onHandleIntent(Intent arg0) {}}
IntentService的使用簡單明了,但是有些事情還是需要注意一下:
1、繼承它的類必須要有一個無參的建構函式,並在此建構函式中調用父類的有參的建構函式,否則會報錯。
2、onHandleIntent是一個抽象方法,必須實現。
3、IntentService已經給建立了新的線程,並且線上程中開啟了looper-handler機制,onHandleIntent就是運行在這個線程空間中的,所以可以直接進行非同步任務。
4、可以多次啟動這個IntentService的實作類別,它的生命週期和普通的生命週期基本相同,另外多個非同步任務可以通過intent傳值區分,並且多個非同步任務會排隊處理。
5、不需要主動調用stopSelft()來結束服務。因為,在所有的非同步任務被處理完後,系統會自動關閉服務。
6、和普通的service一樣需要在manifest中註冊,啟動過車也和普通service一樣。
它的多次啟動時的生命週期如下:
-->AsyncService
-->onCreate
-->onStartCommand
-->onStart
-->onHandleIntent
-->onStartCommand
-->onStart
-->onHandleIntent
-->onDestroy
android耗時任務_IntentService