繁体   English   中英

从服务启动活动并按“主页”按钮后停止先前的活动

[英]Launch activity from service and stop previous activities after pressing Home Button

我的其中一项活动是通过Intent从服务启动的。FLAG_ACTIVITY_NEW_TASK。 当我按下“后退”按钮并启动此Activity它将打开,当我按下“后退”按钮时,我会看到常规的Android主页。 但是,如果我按“主页”按钮,然后从“ Service启动我的“ Activity ,然后按“返回”,则可以从我的应用程序中看到上一个活动。 但我想看看普通的Android主页。

有人可以帮我吗?

如果我对您的理解正确,则需要该Activity的一个实例。 我的看法有两种选择:

  1. 如果您不关心堆栈上有多少活动或如何组织活动,则可以在应用程序清单launchMode设置为singleInstance
  2. 对于大多数应用程序,不建议使用singleInstance (我为您提供的链接并没有详细说明原因,但这是另一回事)。 或者,如果您有多个活动,那么使用此启动模式进行活动可能不合适。 当您在堆栈上有活动或没有活动时,您需要处理这种情况。 从服务中,您可以发送有序广播 ,如果活动处于堆栈中,则该活动可以处理并中止(在您的活动#onCreate()和#onDestroy()中,您将要注册,或者分别取消注册该接收器。请记住要按序排列) )。 更多有关订购广播接收机的信息 因此,如果活动在堆栈中,您将收到该意图并放弃广播。 如果活动不在堆栈中,则另一个优先级较低的广播接收器将收到该意图-在这种情况下,就是您的服务。 因此,再次:onCreate和onDestroy-注册resp。 注销广播接收器。 在其onReceive()方法中,您将处理现在正在执行的操作-使用FLAG_ACTIVITY_NEW_TASK打开“活动”。 希望有道理。

在以下帮助下成功做到了:

  1. launchMode:singleInstance,如@gunar所说
  2. FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
  3. FLAG_ACTIVITY_NEW_TASK
  4. taskAffinity

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM