我找到这个主题的任何地方都说(恢复):"打电话finish()给你的活动,如果你有任何服务在运行,请打电话stopService()给他们".
所以我做了,而且似乎工作,我不再担心.今天,调试我的代码的一部分,我需要在Log非结束线程的方法中添加一行,我想要执行所有应用程序的生命,基本上它是这样的:
final Thread buf_liberator = new Thread(
new Runnable() {
public void run() {
while (true) {
methodCall();
SystemClock.sleep(9000);
}
}
}
);
buf_liberator.setPriority(7);
buf_liberator.start();
Run Code Online (Sandbox Code Playgroud)
在methodCall()我放Log线时,令我惊讶的是,在我关闭我的应用程序后按下退出按钮调用finish()并停止我已启动的服务,我仍然Log在LogCat中每隔9秒无限期地看到该消息.
所以问题是(是):这个线程不是服务,为什么它一直在运行?难道我做错了什么?这是预期的行为吗?是否有一种真正的方法来摧毁应用程序在内存中的所有内容?
谢谢!
所以问题是(是):这个线程不是服务,为什么它一直在运行?
因为您的流程仍在运行.即使您完成()一个Activity或停止()一个服务,您的应用程序进程也可能继续运行.
难道我做错了什么?
除了创建一个永无止境的线程?没有.
这是预期的行为吗?
是.Android系统将处理作为缓存机制来加速恢复以前使用的应用程序.系统最终会在必要时终止您的进程(以及正在运行的线程).不要指望你的线程没有结束,因为它最终会
是否有一种真正的方法来摧毁应用程序在内存中的所有内容?
有一些方法,比如System.exit(),但通常建议您让系统按预期工作.
进一步阅读:http: //developer.android.com/guide/components/processes-and-threads.html
| 归档时间: |
|
| 查看次数: |
544 次 |
| 最近记录: |