AndroidのAsyncTaskクラスでカスタムhandlerを使用

849 ワード

よく知られているAsyncTaskはThread+handler実装であるが,このhandlerは我々によく制御されていない.私のニーズではAsyncTaskでカスタムhandlerを使用し、必要に応じてメッセージループを終了したいと考えています.実現構想は以下の通りである.
AsyncTaskでメッセージループを作成し、handlerターゲット操作を開始し、操作が終了するとメッセージループを終了し、後続のコードを実行します.
コードは次のとおりです.

class mAsyncTask extends AsyncTask {
    @Override
    protected Object doInBackground(Object... params) {
	// TODO Auto-generated method stub
         
         Looper.prepare();	
         MHandler mHandler = new MHandler();
         ...
         //my action
         if(action is over){
             mHandler.getLooper.quit();//     ,      ,      ,     ,     function()    
         }
         ...
         Looper.mLooper.loop();
         function();
         return null;
  }
}