【发布时间】:2014-03-23 08:26:46
【问题描述】:
我在这里搜索了大多数答案,所有答案都建议我们在意图终止旧活动的意图中添加一个标志。问题是我的活动只接收来自其他应用程序的意图并且无法控制它。
更具体地说,我的 Activity 接收到加载图片的意图,然后它使用 Asynctask 加载并对该图片进行一些复杂的后台处理,例如,可能需要 2 分钟。
如果用户此时退出(假设只调用了onStop,还没有调用onDestroy)并分享另一张图片给app,这将启动一个新的activity,并且之前的activity无法访问,但它的Asynctask保持启动线程,以便我的新活动冻结而不启动它自己的 Asynctask。
(后来我尝试了并行线程执行器,但这并不能阻止旧线程运行,从而消耗计算资源。
知道我应该怎么做吗?
(我不想在 onStop 中停止任务,因为这很容易被调用。但是如果共享新图片,我确实想停止任务,因为不再需要它。)
(Asynctask会吐出一大堆在主activity中声明的自定义对象,因此activity会立即从后台进程获取结果更新,调用onPostExecute后UI会立即更新。)
【问题讨论】:
-
尝试使用 Loaders 而不是 asyncTask
标签: java android multithreading android-intent android-asynctask