Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在后台打开新的Android活动_Android_Android Activity_Android Service - Fatal编程技术网

在后台打开新的Android活动

在后台打开新的Android活动,android,android-activity,android-service,Android,Android Activity,Android Service,摘要 当后台服务的应用程序位于后台时,我是否可以从后台服务启动新活动,而不必将应用程序带到前台 背景 假设我正在为Android开发MyApp。该应用程序处理非常敏感的信息,因此我们需要在用户处于非活动状态一段时间后锁定该应用程序 MyApp有一个服务,MyService。与应用程序的不同用户交互会重置MyService中的非活动计时器。当非活动计时器过期时,服务将启动一个新的活动LockActivity,该活动充当MyApp的屏幕锁。用户必须重新验证自己才能通过锁定活动并继续使用应用程序 这一

摘要
当后台服务的应用程序位于后台时,我是否可以从后台服务启动新活动,而不必将应用程序带到前台

背景
假设我正在为Android开发MyApp。该应用程序处理非常敏感的信息,因此我们需要在用户处于非活动状态一段时间后锁定该应用程序

MyApp有一个服务,MyService。与应用程序的不同用户交互会重置MyService中的非活动计时器。当非活动计时器过期时,服务将启动一个新的活动LockActivity,该活动充当MyApp的屏幕锁。用户必须重新验证自己才能通过锁定活动并继续使用应用程序

这一切都有效,但有一个问题:当锁定活动启动时,它会将应用程序带到前端。由于用户可能正在做其他事情(浏览Facebook或其他什么),她会感到恼火,这是理所当然的

我用于从后台启动活动的代码是:

Activity topActivity = magicallyFindMyTopActivity(); // This part is not important; it works though
Intent intent = new Intent(this, LockActivity.class);
topActivity.startActivity(intent);

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

每隔一段时间检查一下后台服务的安全性,现在有一个标志

boolean secure = true;
当时间到期时,更新标志
secure=false

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

几乎每次都有一些东西显示给用户,因此用户可以与之交互

我认为最适合您尝试归档的是使用OnResume事件,并检查一个字段,该字段告诉您应用程序是否安全

大概是这样的:

onResume(..){
  if(isSecured){
     _secureMyApp();
  }    
}
看看这个:

不要在非活动计时器过期时盲目启动锁定活动,只需设置一些变量,然后在应用程序恢复或启动时检查变量状态并首先显示锁定屏幕。

让您的
onResume()
方法检查计时器服务并打开锁定活动。不要使用该服务启动活动。我认为系统警报对话框可以帮助您。[1] 例如我没有明白你的意思。您的意思是,当锁定活动启动时,应用程序将位于前端。这不是你想要的吗?@Dithanial是的,这实际上可以很好地工作。从来没有想过。@traninho:没有,我希望应用程序被锁定在后台。当用户返回应用程序时,它现在被正确锁定。这起作用了。进行了一些重构,但代码总体上比较干净。而且确实有效,所以这是一个加号@兆瓦。很高兴它帮助了你:)!