【发布时间】:2015-03-26 11:33:23
【问题描述】:
总结
当应用程序在后台时,我可以从后台服务启动一个新 Activity, 不将应用程序置于前台吗?
背景
假设我正在为 Android 开发 MyApp。此应用处理非常敏感信息,因此我们需要在用户一段时间不活动时锁定该应用。
MyApp 有一个服务,MyService。与应用程序的不同用户交互会重置 MyService 中的非活动计时器。当不活动计时器到期时,服务会启动一个新活动 LockActivity,它充当 MyApp 的屏幕锁定。用户必须重新验证自己才能通过 LockActivity 并继续使用应用程序。
这一切都有效,但有一个问题:当 LockActivity 启动时,它会将应用程序置于最前面。由于用户可能正在做其他事情(浏览 Facebook 或其他),她会很生气,这是正确的。
我用于从后台启动活动的代码是:
Activity topActivity = magicallyFindMyTopActivity(); // This part is not important; it works though
Intent intent = new Intent(this, LockActivity.class);
topActivity.startActivity(intent);
你知道有什么方法可以避免这种情况吗?
【问题讨论】:
-
让您的
onResume()方法检查计时器服务并打开LockActivity。不要使用服务启动活动。 -
我认为系统警报对话框可以帮助您。 [1]:stackoverflow.com/questions/4481226/…
-
我没明白你的意思。您是说当 LockActivity 启动并且应用程序处于最前面时。这不是你想要的?
-
@Dithanial 是的,这实际上可以正常工作。从来没想过。
-
@traninho:不,我希望应用程序在后台锁定。当用户返回应用程序时,它现在已正确锁定。
标签: android android-activity android-service