首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >活动活跃时的Android后台操作

活动活跃时的Android后台操作
EN

Stack Overflow用户
提问于 2012-05-16 00:45:05
回答 3查看 156关注 0票数 0

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

EN

回答 3

Stack Overflow用户

发布于 2012-05-16 00:51:07

让你的Activity实现onStop(),并在那个时候杀死你的后台任务。

票数 2
EN

Stack Overflow用户

发布于 2012-05-16 01:11:48

你想要onStop()还是onDestroy()

离开该活动,例如单击列表项或启动子活动,将触发onPause(),然后在该活动完全不可见时触发onStop()。如果内存是您关心的问题,您应该考虑在onDestroy()中实现它和/或在后台操作中使用弱/SoftReference来防止泄漏。

票数 0
EN

Stack Overflow用户

发布于 2012-05-16 01:20:46

当活动完成时,android将其所有视图引用设置为null,然后将活动引用设置为null。此外,Android假设由该活动启动的线程可以毫无问题地被终止。因此,线程被杀死,但时间没有定义。在你的情况下,回调并不重要,因为所有的引用都会被设置为null。就没有人会去听回调了。

自己杀死线程的最简单方法是将线程的代码执行保存在loop.You中,它可以有一个易失性的布尔参数,在线程的每个循环中都会检查该参数:

代码语言:javascript
运行
复制
while (!threadStop) {
    // Do stuff
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10605281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档