【发布时间】:2012-06-08 07:01:48
【问题描述】:
我需要一种方法来检测我的应用程序何时关闭,以便我可以告诉网络服务器清除它正在存储的会话变量。有什么办法吗?
【问题讨论】:
标签: android session-variables android-lifecycle
我需要一种方法来检测我的应用程序何时关闭,以便我可以告诉网络服务器清除它正在存储的会话变量。有什么办法吗?
【问题讨论】:
标签: android session-variables android-lifecycle
我假设您的应用程序扩展了 Activity。
您可以使用onDestroy() 方法:
来自docs:
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()。
检查
Activity Lifecycle 和
我想你可以在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() 内存不足而终止进程的活动强>方法。要部署“销毁网络会话”逻辑,您可以启动一个 IntentService 来启动此操作。
希望对你有帮助。
【讨论】: