私のような方法があります:Androidで2回のasyncTask呼び出しの後に文を呼び出す方法はありますか?
void doStuffs() {
new asyncCall1().execute();
new asyncCall2().execute();
}
2つの非同期呼び出しが終了した後にどのように私は別のメソッドを呼び出すことができますか?
私のような方法があります:Androidで2回のasyncTask呼び出しの後に文を呼び出す方法はありますか?
void doStuffs() {
new asyncCall1().execute();
new asyncCall2().execute();
}
2つの非同期呼び出しが終了した後にどのように私は別のメソッドを呼び出すことができますか?
は、第三非同期タスクに完了するの仕事を待つgetメソッドを使用します。
(new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
asyncCall1.execute((Void)null);
asyncCall2.execute((Void)null);
try {
asyncCall1.get();
asyncCall2.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return (Void)null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
}
}).execute((Void)null);
'get()'はUIスレッドをブロックするのですか、それとも単にルーパーに戻ってイベントを待つだけですか? –
私はソースをチェックしていませんが、呼び出しスレッドをブロックしているようです。 –
たぶんonPostExecute呼び出さAsyncTask
の両方にでHandler
を渡し、ハンドラにロジックを構築:
Handler asyncTaskHandler = new Handler() {
private boolean firstTaskComplete = false;
@Override
public void handleMessage(Message msg) {
synchronized (firstTaskComplete) {
if(!firstTaskComplete) {
firstTaskComplete = true;
} else {
// call some other code
}
}
}
};
AsyncTaskからメソッドを呼び出す必要があります。最も簡単な方法は、アクティビティー内のパブリック静的メソッドでステートメントをラップすることです。それ以外の場合は、AsyncTaskにアクティビティへの参照を渡すことができます。それはハンドラ
にどちらの方法を使用することです行うにclassiestの方法は、あなたのAsyncTaskはあなたが完了した後、いくつかの追加処理を実行するために両方のタスクを待ちたい
@Override
onPostExecute(Result r)
{
//logic goes here
}
意味するかに行くべきですか? –
2番目のasyncTaskのonPostExecute()メソッドから呼び出すことができます。 –