Android - 如何检测应用程序是否以编程方式终止?

时间:2017-03-14 04:17:55

标签: android

每当我的应用程序终止时,我想手动或通过操作系统向服务器发送一个事件。有什么方法可以检测到应用程序终止。目前我依靠活动生命周期的onStop()来检测它。但是,即使活动进入后台,也会调用onStop(),我无法区分app是暂停还是终止。

请帮助。提前谢谢。

4 个答案:

答案 0 :(得分:1)

您可以尝试使用系统销毁应用程序时运行的onDestroy()。您的代码看起来像这样:

public void onDestroy() {
super.onDestroy();
//Enter your code here to do stuff
}

然而,在销毁你的app时,它所使用的变量将随之被破坏。

答案 1 :(得分:0)

我认为最好的解决方案是启动服务。当应用程序被强制关闭或从最近的应用程序trey推出时,这种服务将重新启动。

因此,在重启此类服务时,您可以轻松通知服务器应用已关闭。 请宣读这个有用的讨论herehere。如果您需要任何帮助,请告诉我

答案 2 :(得分:0)

可以通过建立计数器来完成您创建了多少活动以及销毁了多少活动。您可以使用通用的BaseActivity来执行此操作,也可以使用ActivityLifecycleCallbacks

如果您只是想知道应用程序是否由于异常而意外退出,可以使用全局ExceptionHandler,请参见Using Global Exception Handling on android

第三种选择: 如果应用程序正常退出,请设置一个标志(即在SharedPreferences中)。

在onCreate的Application类中,您可以检查(并重置)此标志。因此,您可以在下次启动应用程序时执行一些操作。

最后但并非最不重要的一点是,您可以覆盖onBackpressed方法。

最佳选择取决于您需要解决的用例

答案 3 :(得分:-3)

我使用Application.ActivityLifeCycleCallbacks解决了它。

https://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html