android进程在完成活动后仍处于活动状态

android进程在完成活动后仍处于活动状态,android,process,android-activity,Android,Process,Android Activity,我的应用程序启动了3项活动。 当我想退出时,我关闭这3个调用finish方法的活动。然后调用activity onDestroy方法,但进程仍处于活动状态。。。 怎么可能呢 这是完全正常的。Android将保留您的进程,直到需要回收该进程的内存为止。这样,如果用户立即返回到您的应用程序,您的应用程序将显示得更快—Android不必分叉进程并将应用程序加载到内存中。尝试: System.exit(0); 它将终止您的活动进程 编辑: 如以下评论所述。这样做效果更好: android.os.Pro

我的应用程序启动了3项活动。 当我想退出时,我关闭这3个调用finish方法的活动。然后调用activity onDestroy方法,但进程仍处于活动状态。。。
怎么可能呢

这是完全正常的。Android将保留您的进程,直到需要回收该进程的内存为止。这样,如果用户立即返回到您的应用程序,您的应用程序将显示得更快—Android不必分叉进程并将应用程序加载到内存中。

尝试:

System.exit(0);
它将终止您的活动进程

编辑: 如以下评论所述。这样做效果更好:
android.os.Process.killProcess(android.os.Process.myPid())

是否确保清除onDestroy()回调中的所有内容?请确保取消注册内容提供商等,并关闭所有连接。您的活动是否包含任何服务问题在于我有许多静态变量!!当用户返回到我的应用程序时,他们处于未定义状态。我需要在用户退出时正确终止进程application@Arutha:不,你没有。您需要更好地编写代码。在任何时候都不能保证静态数据成员是否存在。这与您是否调用
finish()
没有任何关系,因为在许多其他情况下,用户将放弃您的应用程序,而Android将放弃您的活动(例如,用户按HOME键而不返回)。如果要使用静态数据成员,则必须处理它们是否存在的情况。如果你不能做到这一点,就不要使用静态数据成员。真的没有办法强制杀死当前进程吗?@Darpan:只要进程存在,静态数据成员就存在。一个进程一旦进入后台,它可能只存活数毫秒。如果要持久化数据,请将其写入持久化位置:数据库、
SharedReferences
,或其他形式的文件。在我们的应用程序中,有许多理由避免使用System.exit(0)。。。但是“android.os.Process.killProcess(android.os.Process.myPid());”效果更好……我不知道。谢谢为什么它工作得更好?我没有发现System.exit和killProcess的效果有任何区别。