检测应用程序终止,Android

时间:2012-06-08 07:01:48

标签: android session-variables android-lifecycle

我需要一种方法来检测我的应用程序何时关闭,以便我可以告诉Web服务器清除它存储的会话变量。有没有办法做到这一点?

5 个答案:

答案 0 :(得分:5)

我假设你的应用程序扩展了Activity。

您可以使用onDestroy()方法:

来自docs

  

onDestroy()您的活动被销毁之前收到的最终通话。这可能是因为活动正在完成(有人在其上调用finish(),或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing()方法区分这两种情况。

您的代码如下所示:

public class YourAppActivity extends Activity {
     ...
     ...

     @Override
     protected void onDestroy() {
         super.onDestroy();
         //clear your session variable. 
         //you may want to do this quick, and on another thread 
         //to prevent android from killing your app
     }
 }

答案 1 :(得分:0)

检查 Activity Lifecycle和 我想你可以在onDestroy()

上做到

答案 2 :(得分:0)

您可以尝试在应用程序被系统销毁时运行的onDestroy(),或者在应用程序失去可见性时(通常在销毁之前)onStop()。您的代码看起来像这样:

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

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

请参阅:How to release or clear the value of variable or object?

答案 3 :(得分:0)

为此,您必须为整数类型的计数器创建静态变量。 On OnCreate方法将变量增加1并打开OnDestroy()方法减少变量值。并在OnDestroy()方法中检查静态变量值是否为0如果为0则调用web服务以清除会话

答案 4 :(得分:0)

我会使用Activity的 onDestroy()方法检查用户是否正在终止应用程序,或者操作系统是否因为 isFinishing()方法。要部署“销毁Web会话”逻辑,您可以启动IntentService来启动此操作。

希望它有所帮助。