每当我的应用程序终止时,我想手动或通过操作系统向服务器发送一个事件。有什么方法可以检测到应用程序终止。目前我依靠活动生命周期的onStop()来检测它。但是,即使活动进入后台,也会调用onStop(),我无法区分app是暂停还是终止。
请帮助。提前谢谢。
答案 0 :(得分:1)
您可以尝试使用系统销毁应用程序时运行的onDestroy()。您的代码看起来像这样:
public void onDestroy() {
super.onDestroy();
//Enter your code here to do stuff
}
然而,在销毁你的app时,它所使用的变量将随之被破坏。
答案 1 :(得分:0)
我认为最好的解决方案是启动服务。当应用程序被强制关闭或从最近的应用程序trey推出时,这种服务将重新启动。
因此,在重启此类服务时,您可以轻松通知服务器应用已关闭。 请宣读这个有用的讨论here和here。如果您需要任何帮助,请告诉我
答案 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