インターネット経由でデータを送信するために次のAsycTask
( A と呼ばれる)を使用しているとします。
private class A extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pd = ProgressDialog.show(context, "Notification", "Sending message...");
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
sendMessage();
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if(pd!=null && pd.isShowing())
pd.dismiss();
}
}
内部でdoInbackground
は、my メソッド sendMessage() が呼び出されます。このメソッドの詳細については触れませんが、このメソッドが a を実行することをThread
想像してみてください (これが と呼ばれていると仮定しますB
)。
したがって、質問は次のとおりです。
A の内部のコードonPostExecute()
は、 B ?の終了後に実行されます。AsyncTask
Thread
AsyncTask
そうでない場合、 sendMessage()の内部が終了するときにのみ onPostExecute が実行されるようにするにはどうすればよいですか?