当我关闭一个应用程序时,会调用哪个方法?

9
我阅读了关于活动生命周期及其方法的所有内容。
我仍然找不到答案:当我从“打开的应用程序”菜单中关闭我的应用程序时(在Galaxy4中,长按主页按钮,在Nexus5中,是右侧按钮...),是否会调用任何方法?
换句话说,我的Activity正在启动一个服务。如果应用程序(Activity)正在关闭,则我希望终止服务。(如前面所述,onDestroy不可靠)
提前感谢您!

1
onStop()总是被调用。 - EpicPandaForce
1
请自行测试:在onDestroy和onStop方法上设置断点。 - TheOnlyJakobob
1
你可以从这个链接中找到答案:http://stackoverflow.com/questions/24163541/application-swipe-to-remove-app-recent-app-list - Bhavesh Jethani
1
@BhaveshJethani 是正确的...onStop()确实总是被调用,但只有当应用程序进入后台时才会调用。因此,这是停止/解除绑定您的服务的错误位置。似乎您的服务需要检查“他的”活动是否仍在运行。 - Sven Menschner
@SvenMenschner 谢谢! - nivklein
@SvenMenschner 谢谢! - Bhavesh Jethani
3个回答

5

onPause()是唯一总是被调用的方法。从onPause()状态开始,Android操作系统可以绕过onStop和onDestroy而杀死该应用程序,原因有很多。我认为我们无法平稳地控制这种意外终止的行为。服务可以定期检查应用程序的状态。


1
你会经历 onPause() 然后是 onStop()。在早期的蜂巢之前(API 11),应用程序在 onPause() 返回后随时可能被终止。没有更多的方法被调用,这是一个周期。在蜂巢之后,你至少会得到 onStop()

1
我忘了提到我只想在有人停止\关闭我的应用程序时出现这种行为。 据我所知 - 在许多其他情况下也会调用onStop,我不想终止服务。 - nivklein
1
当任务管理器杀死您的应用程序时,您将不会收到任何通知。 当您的活动不再处于前台时,您将获得onStop(),此时您的进程可以在任何时间被终止。 - Larry Schiefer

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接