【发布时间】:2020-11-24 17:10:23
【问题描述】:
我在一个 android 应用中创建了三个活动:MainActivity、SecondActivity、ThirdActivity 并记录这些活动的onCreate@taskId 事件。
SecondActivity的启动模式设置为singleInstance。
然后我在MainActivity中放了两个按钮。
button1 startActivity(SecondActivity).
button2 startActivityForResult(SecondActivity).
button3 startActivity(ThirdActivity).
点击button1->点击button3后,我得到了以下日志,这与我预期的一样:
MainActivity onCreat@xxx0
SecondActivity onCreate@xxx1 // second activity is expected in a new task
ThirActivity onCreate@xxx0 // third
但是,点击button2 -> 点击button3:
MainActivity onCreat@xxx0
SecondActivity onCreate@xxx0 // it seems that startActivityForResult will make singleInstance activity not work
ThirdActivity onCreate@xxx1 // Here is the weird thing, the ThirdActivity is created on a new task!
谁能解释一下?
这是用于复制的 repo singleInstanceTest。
【问题讨论】:
-
Intent.FLAG_ACTIVITY_NEW_TASK应该可以工作。 -
@Raghunandan 我在启动 SecondActivity 时添加了这个标志,没有任何改变。
-
它应该与在新任务中启动的意图标志第二个活动一起使用
-
看来
singleInstance不适用于startActivityForResult。我想如果你想保持当前的行为,那么从 MainActivity,只需使用 startActivity(secondActivity)。然后使用广播或 EventBus 将结果返回给 MainActivity。