でAsyntTask
始まり、onCreate
無限にループし、UI要素を更新するがあります。
更新はこの方法で行われます(非同期拡張クラスの簡略化された表現、それを呼び出しましょうasyncExtender().execute()
):
doInBackground(){
while (!isCancelled()) {
Thread.sleep(2000);
publishProgress(someValue);
}
}
protected void onProgressUpdate() {
super.onProgressUpdate(values);
// UI update here, e.g. TextView.setText
}
別のアクティビティが開始されます。これをSecondActivityと呼びましょう。SecondActivityは、アクションバーの階層的な戻るボタンを利用して、前のアクティビティ(NavUtils.navigateUpFromSameTask(this)
のonOptionsItemSelected
)に戻ります。
問題は、SecondActivityのアクションバーの戻るボタンをタップすると、最初のアクティビティでAsyncTaskが実行されなくなったように見えることです(UIは2秒ごとに更新されません)。一方、ハードウェアの「戻る」ボタンを使用すると、正常に機能します。AsyncTaskは実行を続けます。
なぜ動作の違いとそれを修正する方法は?