Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序关闭后,应用程序进程仍然存在_Android - Fatal编程技术网

Android 应用程序关闭后,应用程序进程仍然存在

Android 应用程序关闭后,应用程序进程仍然存在,android,Android,我怀疑有一个应用程序可能正在泄漏线程或其上下文。让我这么想的是,关闭应用程序后,流程仍在运行(可见流程监控应用程序)。我已经删除了代码中的所有内容,甚至从onCreate调用finish()。这个过程仍然存在,让我很恼火 我(从)读过 空进程是指不包含任何活动应用程序组件的进程。保留这样一个进程的唯一原因是作为缓存,以便在下次组件需要在其中运行时缩短启动时间。系统通常会杀死这些进程,以便在进程缓存和底层内核缓存之间平衡整个系统资源 我如何知道我的进程是否因为循环引用或上下文泄漏或其他同样糟糕的事

我怀疑有一个应用程序可能正在泄漏线程或其上下文。让我这么想的是,关闭应用程序后,流程仍在运行(可见流程监控应用程序)。我已经删除了代码中的所有内容,甚至从onCreate调用finish()。这个过程仍然存在,让我很恼火

我(从)读过

空进程是指不包含任何活动应用程序组件的进程。保留这样一个进程的唯一原因是作为缓存,以便在下次组件需要在其中运行时缩短启动时间。系统通常会杀死这些进程,以便在进程缓存和底层内核缓存之间平衡整个系统资源


我如何知道我的进程是否因为循环引用或上下文泄漏或其他同样糟糕的事情而仍然存在,或者仅仅是进程是空的?

您如何关闭应用程序?点击后退按钮或主页按钮并不会关闭应用程序,它只是完成(或暂停)活动。您完全无法控制Android何时决定终止进程并终止应用程序。

finish()实际上不会终止您的应用程序。几乎在所有情况下,这与用户按下后退按钮的情况完全相同


可能就是您正在寻找的对象。

您仍然可以看到该过程,这一事实不会为您提供有关应用程序中是否存在对对象的引用的任何信息。没有魔法能帮你回答这个问题

如果您担心,您应该检查您正在向系统服务注册回调(又名侦听器)的位置(如果在任何地方)。这是一个常见的根本原因。正确的模式是在onResume()中注册,在onPause()中注销。您可以保证,当您的应用程序暂停/恢复时,这些服务将被调用


除非您有真正特殊的原因,否则不要像上面建议的那样使用各种方法手动终止您的进程。操作系统内置了内存管理功能。不要试图比操作系统更聪明。android将应用程序工件(活动、服务等)保存在内存中,即使它们“完成”。这使它们下次可以更快地重新启动。如果它需要内存来做其他事情,它将从内存中删除未使用的进程。

我通过调用finish()关闭应用程序。好了,我开始明白了。。。无控制…Finish()仅关闭活动。它与应用程序或进程无关。好的,我认为对堆栈底部的活动调用finish()会关闭应用程序。如果这不是关闭应用程序的正确方法,我应该怎么做?你不应该。没有“关闭”应用程序的方法。android中没有这样的概念。你想完成什么?很好,看来我做得很好。我只是试图以正确的方式隐藏/关闭我的应用程序。这就是杀死进程的方式,但请不要这样做。您应该正确地管理流程/活动生命周期,以便在应用程序没有焦点时不会耗尽资源。