我有两个活动。让我们称它们为ActivityA
and ActivityB
。singleTask
ActivityA在清单文件中被标记。我可以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
(或)并且不会重新创建。没关系。ActivityC
ActivityB
ActivityA
问题是,如果我ActivityB
从小部件开始并使用后退按钮或按钮ActivityB
(如上所述)ActivityA
被重新创建并成为堆栈中的单个实例。
我希望能够以ActivityA
始终是根活动的方式管理这两个活动,如果它已经在运行,则不会重新创建。