有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android打算开启新的活动,但没有关闭旧的活动

我在这里搜索了大多数答案,所有答案都建议我们在“消灭旧活动”的意图上加上一个标志。问题是我的活动只接收来自其他应用程序的意图,无法控制它

更具体地说,我的活动接收到加载图片的意图,然后使用Asynctask加载并对该图片进行一些复杂的背景处理,例如,可能需要2分钟

如果用户此时退出(假设只调用了onStop,而不是onDestroy)并向应用程序共享另一张图片,这将启动一个新的活动,并且之前的活动无法访问,但其Asynctask会阻塞线程,因此我的新活动只是冻结,而不会启动自己的Asynctask

(我后来尝试了并行线程执行器,但这并不能阻止旧线程运行,从而消耗计算资源)

知道我该怎么做吗

(我不想在onStop中停止任务,因为这很容易调用。但如果共享了新图片,我确实想停止任务,因为不再需要它。)

(Asynctask将抛出大量在主活动中声明的自定义对象,因此该活动会立即从后台进程更新结果,并且在调用onPostExecute后,UI会立即更新。)


共 (1) 个答案

  1. # 1 楼答案

    编辑: 你的问题似乎是你试图在活动启动的异步任务中完成所有这些图像处理工作。你有没有考虑过改变你的应用程序架构,把所有这些后台处理都变成service

    在处理服务中的图像时,可以使用“活动”来显示一些UI信息,或者如果不需要此UI,只需与服务通信(例如,通过广播)即可向其提供图像,并让服务通过通知显示一些流程信息


    如果你不想在退出活动时保持活动状态,可以使用

    android:noHistory="true"在清单上的活动声明中

    更多信息here