我的一项活动是使用 Intent.FLAG_ACTIVITY_NEW_TASK 从服务启动的。当我按下返回按钮并启动Activity
它时,它会打开,当我按下返回按钮时,我会看到常规的 Android 主页。但是,如果我按下 Home 按钮,然后开始我Activity
的 fromService
并按下 Back,我会从我的应用程序中看到上一个 Activity。但我希望看到常规的 Android 主页。
有人可以帮我吗?
我的一项活动是使用 Intent.FLAG_ACTIVITY_NEW_TASK 从服务启动的。当我按下返回按钮并启动Activity
它时,它会打开,当我按下返回按钮时,我会看到常规的 Android 主页。但是,如果我按下 Home 按钮,然后开始我Activity
的 fromService
并按下 Back,我会从我的应用程序中看到上一个 Activity。但我希望看到常规的 Android 主页。
有人可以帮我吗?
如果我对您的理解正确,您需要有一个 that 实例Activity
。在我看来,您有两种选择:
launchMode
为。singleInstance
singleInstance
不推荐用于大多数应用程序(我为您提供的链接没有详细说明原因,但那是另一回事)。或者,如果您有多个活动,则使用此启动模式进行活动可能不合适。当您在堆栈上有活动或没有活动时,您需要处理这种情况。从服务中,您可以发送一个有序的广播,如果它在堆栈上,您的活动可以处理和中止(在您的活动中 #onCreate() 和 #onDestroy() 您将注册,相应地取消注册该接收器。记住以高序号注册)。更多关于订购广播接收器的信息。因此,如果活动在堆栈上,您将收到该意图并丢弃广播。如果活动不在堆栈上,则另一个广播接收器具有较低优先级的将收到该意图 - 在这种情况下,您的服务。所以,再次: onCreate 和 onDestroy - 分别注册。注销广播接收器。在它的onReceive()
方法中,您将处理您现在正在做的事情 - 打开 Activity FLAG_ACTIVITY_NEW_TASK
。希望这是有道理的。在以下人员的帮助下成功做到了: