在后台打开新的Android活动

时间:2015-03-26 11:33:24

标签: android android-activity android-service

摘要
当应用程序在后台时,是否可以从后台服务启动新活动,没有将应用程序带到前端?

背景
假设我正在为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);

你知道有什么方法可以避免这种情况吗?

3 个答案:

答案 0 :(得分:1)

在某个时间间隔检查后台服务中的安全事项,现在有一个标志

boolean secure = true;

时间到期时更新标志secure = false;

在主活动中,每次检查标志是否为假,要求用户进行身份验证。 (不要创建任何新活动)

答案 1 :(得分:1)

Activity几乎每次出现在用户身上,因此用户可以与之互动。

我认为最适合您要归档的内容是使用 OnResume 事件并检查一个字段,该字段说明应用是否受到保护。

这样的事情:

onResume(..){
  if(isSecured){
     _secureMyApp();
  }    
}

看看这个: enter image description here

答案 2 :(得分:0)

当不活动计时器到期时,不要盲目地启动锁定活动,只需设置一些变量,当您的应用程序恢复或开始检查变量状态并首先显示锁定屏幕时。

相关问题