【发布时间】:2012-11-04 21:48:05
【问题描述】:
我有一个AsyntTask,它以onCreate 开始并无限循环,更新一个 UI 元素。
更新是以这种方式完成的(Async扩展类的简化表示,我们称之为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 利用操作栏中的分层后退按钮返回到上一个活动(onOptionsItemSelected 中的NavUtils.navigateUpFromSameTask(this))。
问题是,当我在 SecondActivity 中点击 操作栏中的返回按钮时,AsyncTask 似乎不再在第一个 Activity 中运行(UI 不会每 2 秒更新一次)。另一方面,如果我使用硬件“后退”按钮,它可以正常工作 - AsyncTask 会继续运行。
为什么会出现行为差异以及如何解决?
【问题讨论】:
标签: android multithreading android-asynctask android-activity