0

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

4

5 回答 5

5

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

您可以使用以下onDestroy()方法:

文档

onDestroy() 是您在活动被销毁之前收到的最后一个调用。这可能是因为 Activity 正在完成(有人在其上调用了 finish(),或者因为系统正在临时销毁该 Activity 实例以节省空间。您可以使用 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
     }
 }
于 2012-06-08T07:06:08.007 回答
0

检查 活动生命周期,我认为你可以做到onDestroy()

于 2012-06-08T07:07:05.437 回答
0

您可以尝试onDestroy()在应用程序被系统销毁或onStop()应用程序失去可见性(通常在销毁之前)时运行哪个。您的代码将如下所示:

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

但是,在销毁您的应用程序时,它使用的变量将与它一起被销毁。

请参阅:如何释放或清除变量或对象的值?

于 2012-06-08T07:10:37.663 回答
0

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

于 2012-06-08T07:11:28.867 回答
0

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

希望能帮助到你。

于 2012-10-08T21:51:57.303 回答