Android:如何从BroadcastReceiver恢复应用程序/活动?
如果我的程序如下:Android:如何从BroadcastReceiver恢复应用程序/活动?,android,android-activity,android-intent,broadcastreceiver,Android,Android Activity,Android Intent,Broadcastreceiver,如果我的程序如下: 启动活动A->活动B 按“主页”按钮 再次单击应用程序 结果:“活动B”显示(它将恢复) 启动活动A->活动B 按“后退”按钮 再次单击应用程序 结果:显示“活动A”(它将重新启动) 我想在广播接收器上做完全相同的事情 启动活动A->活动B 按“主页”按钮 BroadcastReceiver接收到广播并希望“恢复”应用程序 我的预期结果:显示“活动B” 我想在广播接收器上做完全相同的事情 启动活动A->活动B 按“后退”按钮 BroadcastReceiver接收到广播并希望
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, ActivityA.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
我也尝试过“意向。标志活动”从历史中发起,但没有成功。天哪,我成功了 谢谢你们提供的其他答案,但它们不是我想要的 这将完成以下工作:
Intent i = getPackageManager().getLaunchIntentForPackage("com.your.package.name");
i.setFlags(0);
i.setPackage(null);
startActivity(i);
看看这个
将标志设置为您的目的intent。将活动标记为\u重新排序为\u FRONT
和
意图。将活动标记为新任务
如下
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT|Intent.FLAG_ACTIVITY_NEW_TASK);
您的意思是,在使用新任务标志启动活动A后,活动A没有显示?无论如何,您可以尝试使用
singleTask
和flag\u activity\u new\u task
来实现它。否,如果按下“主页”按钮,我希望“活动B”显示。我尝试了singleTask并标记了“活动”\u NEW\u任务,但当按下“主页”按钮时,它不会恢复到活动B。声明您的活动B启动模式为single TASK
,除了将ActivityA.class
更改为ActivityB.class
之外,还可以从上面的代码开始,我很高兴知道您解决了问题。接受您自己的回答android源文件ActivityStack.java中的此注释解释了为什么://在本例中,我们启动任务的根活动//但目的不同。我们//应该在顶部启动一个新实例。谢谢您的回答!我找了一整天@@我不知道为什么使用Intent.FLAG\u ACTIVITY\u NEW\u任务的解决方案不起作用。这是在官方文件中指定的!想解释一下你的答案为什么有效吗?