【发布时间】:2011-09-01 23:50:02
【问题描述】:
我的 Android 应用程序有一个不活动超时。超时时,我将用户返回到(始终)在后台堆栈中的“登录”屏幕。我的 SignIn 类设置了 android:launchMode="singleTop",因此在后台堆栈中运行的实例总是被重用。
我在超时时开始此意图:
Intent inactivityTimeout = new Intent(this, SignIn.class);
inactivityTimeout.putExtra(INTENT_EXTRA_INACTIVITY_TIMEOUT, true);
int flags = inactivityTimeout.getFlags();
flags = flags|FLAG_FROM_BACKGROUND|Intent.FLAG_ACTIVITY_CLEAR_TOP;
inactivityTimeout.setFlags(flags);
当登录屏幕启动时,它会检查INTENT_EXTRA_INACTIVITY_TIMEOUT Intent extra。如果找到,它会显示“您已退出”对话框。这一切正常。
现在我将解决问题:由于它基于计时器,因此无论我的应用程序是在前台还是后台,都可以触发此 Intent。这是理想的,因为我不希望应用程序仅仅因为它在后台而无限期地保持登录状态。
但是,当应用程序处于后台并且计时器到期时,会触发此 inactivityTimeout Intent 并将应用程序带回前台。 现在提醒用户他们已经超时并不紧急,所以我希望应用程序保持在后台,以免中断当前操作。
我尝试将 FLAG_FROM_BACKGROUND 标志添加到我的 Intent 中,但应用程序仍处于前台。我不确定还可以尝试什么,或者这是否是我应该在 Intent 或接收活动中解决的问题。
谁能建议一种在我的 Intent(或响应活动中?)中实现这一点的方法。还是我在这里遗漏了一些概念性的东西?谢谢!
【问题讨论】:
标签: android background timeout android-intent