我需要一种方法来检测我的应用程序何时关闭,以便我可以告诉 Web 服务器清除它正在存储的会话变量。有没有办法做到这一点?
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
}
}
检查
活动生命周期,我认为你可以做到onDestroy()
您可以尝试onDestroy()
在应用程序被系统销毁或onStop()
应用程序失去可见性(通常在销毁之前)时运行哪个。您的代码将如下所示:
public void onDestroy() {
super.onDestroy();
//Enter your code here to do stuff
}
但是,在销毁您的应用程序时,它使用的变量将与它一起被销毁。
请参阅:如何释放或清除变量或对象的值?
为此,您必须为整数类型的计数器创建静态变量。On OnCreate 方法将变量递增 1,在 OnDestroy() 方法上将变量值递减。并在 OnDestroy() 方法上检查静态变量值是否为 0,如果为 0,则调用 web 服务清除会话
我将使用 Activity 的onDestroy()方法检查用户是否正在终止应用程序或操作系统是否因为isFinishing()方法的内存不足而终止进程的活动。要部署“销毁 Web 会话”逻辑,您可以启动 IntentService 来启动此操作。
希望能帮助到你。