2011-12-19 14 views
1

バックグラウンドで実行されたAsyncTaskが完了したことをどのように知ることができますか?

は、私は私が「onPostExecute」メソッドをimplimented、私が使用して主な活動から、このような背景のアクションを呼び出す、今クラスに

public class SendStringToServer extends AsyncTask<String, Integer, Boolean> 
{ 
    . 
    . 
    . 
} 

を定義...私はここに理解していない何かがあります

new SendStringToServer().execute("stringToSend"); 

ここで、主なアクティビティからこの操作が行われたことをどのように知ることができますか? こんにちは、この文字列がすでに送信されていることをメインアクティビティから知ることができますか?

答えて

3

このようにしてみてください。

public Handler myHandler= new Handler(){ 
     @Override 
     public void handleMessage(Message msg){   

      if(msg.arg1 == 1){ 
        //NOW in mainThread 

      } 
     } 
    }; 

public class SendStringToServer extends AsyncTask<String, Integer, Boolean> 
{ 
    . 
    . 
    . 
    onPostExecute(){ 
      --------- 
     ----------------- 

     Message msg = myHandler.obtainMessage(); 
     msg.arg1 = 1; 
     myHandler.sendMessage(msg); 

    } 
} 
0

最も簡単な方法は、ちょうど

を追加

new SendStringToServer().execute("stringToSend"); 

後にonPostExecuteで、あなたの活動の内側

boolean sendComplete = false; 

をグローバルフラグを作成することです

sendComplete = true; 
0

アクティビティにリスナーがある場所で、onpostexecuteイベントを使用する必要があります。

関連する問題