我有一个活动A,在Manifest
其中声明android:launchMode="singleTask"
,另一个活动B没有其他属性。
据我所知,如果已经有一些任务正在运行活动 A,如果我尝试启动活动 A,则不会创建新实例,而是将当前任务置于前面。
现在,我想使用TaskStackBuilder
来拨打包括这两项活动的电话。
假设我在 Activity A中的 Fragment 上并调用:
TaskStackBuilder.create(context)
.addNextIntent(new Intent(context, A.class))
.addNextIntent(new Intent(context, B.class))
.startActivities();
我假设当前堆栈变为:A > B,A被调用onNewIntent
,B被新实例调用。此外,我希望活动A保持其状态。
但是会发生什么:我没有接到Activity A的电话onNewIntent
,而是接到了电话。如果我从新创建的 Activity B返回,则调用 Activity A的新实例。(他们不相等!)。onDestroy
onCreate
谁能向我解释一下,为什么我的 Activity A被丢弃而不是什么都不做,而是将B添加到堆栈中?很遗憾,我自己无法解决这个问题,但我看不到这里的障碍。
编辑/附言:我context
用于 StackBuilder 的可以是视图上下文或服务上下文。