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();
}