我有两个活动。让我们称它们为ActivityAand ActivityB。singleTaskActivityA在清单文件中被标记。我可以ActivityB从ActivityA使用简单startActivity调用开始(不Intent使用标志)。我也可以ActivityC从它ActivityA开始ActivityB(也使用 "simple" Intents)。
ActivityB有一个执行此代码的按钮:
Intent intent = new Intent(ActivityB.this,
ActivityA.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
我还有一个可以开始ActivityA使用此代码的小部件:
Intent aIntent = new Intent(context, ActivityA.class);
aIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
aIntent, 0);
它也可以ActivityB从网格项目开始:
Intent bIntent = new Intent(context, ActivityB.class);
PendingIntent bPendingIntent = TaskStackBuilder.create(context)
.addNextIntent(aIntent).addNextIntent(bIntent )
.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
如果我ActivityA从启动器开始ActivityB,从它开始(或ActivityA-> ActivityC-> ) - 我可以使用后退按钮或按钮(如上所述)ActivityB移回ActyvityA(或)并且不会重新创建。没关系。ActivityCActivityBActivityA
问题是,如果我ActivityB从小部件开始并使用后退按钮或按钮ActivityB(如上所述)ActivityA被重新创建并成为堆栈中的单个实例。
我希望能够以ActivityA始终是根活动的方式管理这两个活动,如果它已经在运行,则不会重新创建。