我必须在应用程序中维护基于会话的统计信息。问题是android从不关闭应用程序,即使用户使用后退按钮退出应用程序(可能是因为我在后台运行服务)。
我想要重置我的会话信息,如果应用程序在后台持续X分钟(以区别于电话呼叫或闹铃)。有没有办法做到这一点?
也许是某种广播接收器来侦测事件...?
让我试着解释一下这个场景。我的应用程序中有这一部分,只有在进行身份验证(输入密码)之后才能访问。现在,一旦用户进入这一部分,我就不想在每次暂停活动时都要求用户进行身份验证。但是假设用户按下Home键并在20分钟后返回应用程序,我想请求身份验证。
编辑:我正在处理多个活动,所以我不能简单地在onPause()中设置一个标志就能检测到应用程序转到后台。
发布于 2011-10-19 20:47:56
private static boolean isApplicationGoingToBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}调用onStop。在任何占据屏幕的onStart之后调用onStop -如果它是同一apk包中的一个活动,那么您就不会进入后台。这确实需要GET_TASKS权限,如果一个活动在你没有退出的情况下出现,它仍然会触发(用户从通知栏或其他地方选择一些东西)。
或者绑定到一个服务onStart & unbind onStop -当你的所有活动都停止时,该服务将是onDestroyed (或者,如果你不想依赖于onDestroyed被调用,那么跟踪绑定vs解除绑定-因为它可能不..)。
发布于 2011-10-19 14:36:08
我不能完全确定,但我认为当用户使用后退按钮存在应用程序时,您的应用程序确实会关闭(除非您是为了其他原因而捕获它,或者在后台运行其他共享相同会话首选项的服务)。
不管怎样..。
为了回答你的问题,有两种简单的方法来做你想做的事情:
https://stackoverflow.com/questions/7817193
复制相似问题