IntentService源碼

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();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章