我有一个AsyntTask
,它以onCreate
开头,并无限循环更新UI元素。AsyncTask在通过ActionBar返回到活动时不会恢复返回图标
更新以这种方式完成(异步扩展类的简化表示,姑且称之为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似乎没有在第一个活动运行了(用户界面不会得到每2秒更新一次)。另一方面,如果我使用硬件“返回”按钮,它工作正常 - AsyncTask保持运行。
为什么行为上的差异以及如何解决?
除了使用服务,我认为这对于这样简单的场景(带有声明等等)来说会是一种矫枉过正,您的建议是什么? –
或者使用ExecutorService或者我提供的读链接,AsyncTask可以启用并行运行 - 这可能更好 - 只是为了检查这是否是问题的根源 – marcinj