1

我的一项活动是使用 Intent.FLAG_ACTIVITY_NEW_TASK 从服务启动的。当我按下返回按钮并启动Activity它时,它会打开,当我按下返回按钮时,我会看到常规的 Android 主页。但是,如果我按下 Home 按钮,然后开始我Activity的 fromService并按下 Back,我会从我的应用程序中看到上一个 Activity。但我希望看到常规的 Android 主页。

有人可以帮我吗?

4

2 回答 2

1

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

  1. 如果您不关心堆栈上有多少活动,或者它们是如何组织的,您可以在应用程序清单中设置launchMode为。singleInstance
  2. singleInstance不推荐用于大多数应用程序(我为您提供的链接没有详细说明原因,但那是另一回事)。或者,如果您有多个活动,则使用此启动模式进行活动可能不合适。当您在堆栈上有活动或没有活动时,您需要处理这种情况。从服务中,您可以发送一个有序的广播,如果它在堆栈上,您的活动可以处理和中止(在您的活动中 #onCreate() 和 #onDestroy() 您将注册,相应地取消注册该接收器。记住以高序号注册)。更多关于订购广播接收器的信息。因此,如果活动在堆栈上,您将收到该意图并丢弃广播。如果活动不在堆栈上,则另一个广播接收器具有较低优先级的将收到该意图 - 在这种情况下,您的服务。所以,再次: onCreate 和 onDestroy - 分别注册。注销广播接收器。在它的onReceive()方法中,您将处理您现在正在做的事情 - 打开 Activity FLAG_ACTIVITY_NEW_TASK。希望这是有道理的。
于 2013-07-05T08:10:23.277 回答
0

在以下人员的帮助下成功做到了:

  1. launchMode:singleInstance,正如@gunar 所说
  2. FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
  3. FLAG_ACTIVITY_NEW_TASK
  4. 任务亲和
于 2013-07-18T06:21:17.610 回答