IntentService是一個基本類,用來處理異步請求(用Intents來傳遞的)的服務(wù)缎罢∫寥海客戶端通過調(diào)用startService(Intent)來發(fā)送請求;當(dāng)需要的時候service被啟動屁使,使用一個工作者線程來依次處理每一個Intent在岂;當(dāng)任務(wù)運(yùn)行完畢之后會自動關(guān)閉。這個“工作隊(duì)列處理器”模式通常用來幫助處理應(yīng)用的主線程中的任務(wù)蛮寂。IntentService類是為了簡化這個模式和照看結(jié)構(gòu)而存在的蔽午。通過繼承IntentService實(shí)現(xiàn)onHandleIntent(Intent)方法來使用它。IntentService將會接收Intents酬蹋,創(chuàng)建一個工作者線程及老,并在適當(dāng)?shù)臅r候(任務(wù)結(jié)束的時候)停止服務(wù)。
所有的請求都被一個單獨(dú)的工作者線程(HandlerThread)處理--他們或許需要足夠長的時間來處理(并且不會阻塞應(yīng)用的主循環(huán))范抓,但是同一時間只能處理一個請求
使用方法
1.聲明一個類繼承自IntentService
2.重寫onHandleIntent方法
3.在Manifest文件中注冊
原理
1.從源碼中可以看出IntentService中一個靜態(tài)的Handler內(nèi)部類
2.在IntentService的onCreate方法中創(chuàng)建了一個HandlerThread 對象 并啟動該線程
3.啟動HandlerThread之后獲取當(dāng)前線程r的Looper對象用于創(chuàng)建Handler靜態(tài)內(nèi)部類實(shí)例
4.在onHandleIntent方法中執(zhí)行異步任務(wù)