活动处于活动状态时的Android后台操作

时间:2012-05-15 16:45:05

标签: java android

所以这是我的理论 - 当在活动创建时创建后台线程时,使用由活动引用的回调,如果活动已关闭,由于回调的硬引用,它会保留在内存中,我是对的吗?那么,如何在活动结束时确保后台操作停止执行?

3 个答案:

答案 0 :(得分:2)

让你的Activity实施onStop()并在那时杀死你的后台任务。

答案 1 :(得分:0)

您想要onStop()还是onDestroy()

离开活动,例如点击列表项或开始子活动将触发onPause(),然后onStop()当活动完全不可见时。如果您关注内存,则应考虑在onDestroy()中实现内存和/或在后台操作中使用Weak / SoftReference以防止泄漏。

答案 2 :(得分:0)

当一个Activity完成后,android会将其所有视图引用设置为null,然后将Activity引用设置为null。此外,Android假定活动启动的线程可以被杀死而没有任何问题。因此,线程被杀死,但时间定义。在您的情况下,回调不重要,因为所有引用都将设置为null。没有人可以听回叫。

最容易自己杀死线程的方法是将线程的代码执行保持在循环中。你可以在你的线程的每个循环上检查一个volatile布尔参数:

while (!threadStop) {
    // Do stuff
}

在onDestroy()中,将此变量设为true