Android应用 session 管理

标签 android session

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

如果应用程序在后台运行 X 分钟(以区别于打电话或闹钟),我想重置我的 session 信息。有什么办法吗?

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

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

编辑:我正在处理多个 Activity ,所以我无法检测到应用程序进入后台,只是在 onPause() 中设置一个标志。

最佳答案

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。 onStop 在 onStart 之后被调用,无论什么接管屏幕 - 如果它是同一个 apk 包中的 Activity ,那么你就不会进入后台。这确实需要 GET_TASKS 权限,如果在您没有退出的情况下出现 Activity ,它仍会触发(用户从通知栏或其他内容中选择某些内容)。

或者绑定(bind)到服务 onStart 和取消绑定(bind) onStop - 当你所有的 Activity 都停止时,服务将被 onDestroyed (或者如果你不想依赖 onDestroyed 被调用,则跟踪绑定(bind)与取消绑定(bind) - 因为它可能不会.. ).

关于Android应用 session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7817193/

相关文章:

java - Facebook SDK v3.5.2 - 从封闭 session 请求权限

hibernate - 我们可以限制从 SessionFactory 获取的 session 数量吗?

java - 在 weblogic 与 tomcat 中访问 session 属性

android - jack 似乎并没有自己混淆代码

android - 从 URL 获取图像

java - 有没有办法验证数据在发送到网络服务(使用 HTTP 连接)期间是否未更改?

session - 当绑定(bind)/未绑定(bind)到 HTTP session 时获取通知

PHP Session 类和 $_SESSION 数组

java - Android: Unresolved 依赖关系

java - 在 Android 中测试多边形内的点