干净地退出Android应用程序

nKn*_*nKn 1 android exit

我找到这个主题的任何地方都说(恢复):"打电话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秒无限期地看到该消息.

所以问题是(是):这个线程不是服务,为什么它一直在运行?难道我做错了什么?这是预期的行为吗?是否有一种真正的方法来摧毁应用程序在内存中的所有内容?

谢谢!

dom*_*der 7

所以问题是(是):这个线程不是服务,为什么它一直在运行?

因为您的流程仍在运行.即使您完成()一个Activity或停止()一个服务,您的应用程序进程也可能继续运行.

难道我做错了什么?

除了创建一个永无止境的线程?没有.

这是预期的行为吗?

是.Android系统将处理作为缓存机制来加速恢复以前使用的应用程序.系统最终会在必要时终止您的进程(以及正在运行的线程).不要指望你的线程没有结束,因为它最终会

是否有一种真正的方法来摧毁应用程序在内存中的所有内容?

有一些方法,比如System.exit(),但通常建议您让系统按预期工作.

进一步阅读:http: //developer.android.com/guide/components/processes-and-threads.html