IntentService繼承自Service,在onCreate方法中創建HandlerThread並啓動線程,利用HandlerThread在子線程中的Looper生成一個在子線程中工作的ServiceHandler
HandlerThread thread = new HandlerThread("IntentService[" + mName + "]");
thread.start();
mServiceLooper =thread.getLooper();
mServiceHandler =new ServiceHandler(mServiceLooper);
在ServiceHandler的handleMessage中調用方法處理耗時任務
public void handleMessage(Message msg) {
onHandleIntent((Intent) msg.obj);
stopSelf(msg.arg1);
}
在onStart和onStartCommand函數中會向ServiceHandler中發送消息,開始耗時任務處理
Message msg = mServiceHandler.obtainMessage();
msg.arg1 =startId;
msg.obj =intent;
mServiceHandler.sendMessage(msg);
在onDestory方法中結束Loop循環
public void onDestroy() {
mServiceLooper.quit();
}