Android 一旦失去焦点,如何杀死应用程序?

Android 一旦失去焦点,如何杀死应用程序?,android,android-activity,process,background,focus,Android,Android Activity,Process,Background,Focus,我试图让我的应用程序的主要活动完成(而不是在后台保持活动的应用程序),同时使服务的流程保持活动状态 如果用户按下home(主页)按钮并离开我的应用程序,或者从我的应用程序外部启动了另一个活动,我希望该活动被关闭,并且不作为活动应用程序列出 然而,重要的是,这个过程要保持活力。我不希望我的后台服务也死掉 执行此操作的最佳方法是什么?您不应该强制关闭应用程序,因为系统本身在处理此问题方面做得很好。相反,您应该调用finish()来表示应用程序已经完成并且可以处理(您的服务将继续运行)。默认情况下没有

我试图让我的应用程序的主要活动完成(而不是在后台保持活动的应用程序),同时使服务的流程保持活动状态


如果用户按下home(主页)按钮并离开我的应用程序,或者从我的应用程序外部启动了另一个活动,我希望该活动被关闭,并且不作为活动应用程序列出

然而,重要的是,这个过程要保持活力。我不希望我的后台服务也死掉


执行此操作的最佳方法是什么?

您不应该强制关闭应用程序,因为系统本身在处理此问题方面做得很好。相反,您应该调用finish()来表示应用程序已经完成并且可以处理(您的服务将继续运行)。

默认情况下没有UI。一旦启动,它们就会一直跑,直到撞车或死亡。用户可以关闭你的应用程序并启动一个新的应用程序,该服务将保持不变

另一方面,它们只有在可见时才运行。当用户导航到另一个活动时,将显示上一个活动

执行上面简要描述的操作的一个简单方法是创建一个启动服务的活动。这样,当use离开您的活动时,服务将在后台继续运行


如果你想让你的活动在新活动出现时完全消失,只需在活动的
onPause()
onStop()
方法中调用
finish()
(更适合你的应用程序)

关闭应用程序是热门话题,请阅读以下内容:。简而言之,自己关闭应用程序并不是必需的。“我希望活动被关闭,而不是作为活动应用程序列出。然而,重要的是,流程保持活动状态。我不希望我的后台服务也死掉。”——这些是相互排斥的概念。您的应用程序正在运行或未运行。在薛定谔的cat场景应用程序之外,它不能同时运行和不运行。任何报告进程正在运行的内容都将报告您正在运行的进程。正在运行的进程与“任务管理器”中列出的“活动”应用程序之间存在差异。问题在于,如果活动启动另一个活动,onPause方法finish()调用将关闭应用程序。不,它不会关闭应用程序,它只会关闭该
活动
。您已经启动的任何其他
活动
服务
将继续运行。此外,您呼叫
finish
的地点取决于您的具体需要。您需要确定它是否更适合于
onPause()
onStop()
。在onStop中执行会引发异常,如果活动启动是子活动,则在onPause中执行会导致应用程序退出。True。但我在寻找如何有效地做到这一点。