首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android应用会话管理

Android应用会话管理
EN

Stack Overflow用户
提问于 2011-10-19 14:07:15
回答 2查看 2.4K关注 0票数 1

我必须在应用程序中维护基于会话的统计信息。问题是android从不关闭应用程序,即使用户使用后退按钮退出应用程序(可能是因为我在后台运行服务)。

我想要重置我的会话信息,如果应用程序在后台持续X分钟(以区别于电话呼叫或闹铃)。有没有办法做到这一点?

也许是某种广播接收器来侦测事件...?

让我试着解释一下这个场景。我的应用程序中有这一部分,只有在进行身份验证(输入密码)之后才能访问。现在,一旦用户进入这一部分,我就不想在每次暂停活动时都要求用户进行身份验证。但是假设用户按下Home键并在20分钟后返回应用程序,我想请求身份验证。

编辑:我正在处理多个活动,所以我不能简单地在onPause()中设置一个标志就能检测到应用程序转到后台。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-19 20:47:56

代码语言:javascript
复制
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解除绑定-因为它可能不..)。

票数 4
EN

Stack Overflow用户

发布于 2011-10-19 14:36:08

我不能完全确定,但我认为当用户使用后退按钮存在应用程序时,您的应用程序确实会关闭(除非您是为了其他原因而捕获它,或者在后台运行其他共享相同会话首选项的服务)。

不管怎样..。

为了回答你的问题,有两种简单的方法来做你想做的事情:

  1. 尝试Flurry。它真的做得很好。或者Google Analytics for mobile,它们都很容易使用,它们会为你处理这些问题。
  2. 如果要进行背景调查,只需在活动的onPause()块中记录一个SharedPreference,在应用程序的新屏幕出现时刷新它,同时检查旧屏幕是否已经过期(这将在onResume()中发生)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7817193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档