【问题标题】:Bug: onNewIntent not called for singleTop activity with Intent.FLAG_ACTIVITY_NEW_TASK [closed]错误:使用 Intent.FLAG_ACTIVITY_NEW_TASK 的 singleTop 活动不调用 onNewIntent [关闭]
【发布时间】:2012-12-28 13:30:10
【问题描述】:
startActivity 中似乎存在错误。
通过在 AndroidManifest.xml 中将活动设置为singleTop 和不同的taskAffinity,并在调用startActivity 时使用Intent.FLAG_ACTIVITY_NEW_TASK,可以在两个任务中创建两个活动(每个任务一个活动)。
再次调用startActivity 将返回到第一个活动/任务并调用onNewIntent。但是,第四次调用startActivity 将返回到第二个活动/任务,但不会调用onNewIntent。
这两个任务的唯一区别是它们的taskAffinity。不知何故,观察到不对称行为。
但是,如果Intent.FLAG_ACTIVITY_SINGLE_TOP 也被使用,那么onNewIntent 会按预期调用。
AndroidManifest.xml 中的singleTop 似乎与Intent 中的Intent.FLAG_ACTIVITY_SINGLE_TOP 不同。
公共类 ActivityA 扩展 Activity 实现 OnClickListener {
私有字符串标签;
@覆盖
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
标签 = getClass().getName();
Log.v(tag, "onCreate()");
设置内容视图(R.layout.main);
按钮按钮 = (Button)findViewById(R.id.button);
button.setText(tag.endsWith("ActivityA") ? "Activity B"
:“活动A”);
button.setOnClickListener(this);
}
@覆盖
公共无效 onClick(查看 v){
意图意图;
int 标志 = Intent.FLAG_ACTIVITY_NEW_TASK
// | Intent.FLAG_ACTIVITY_SINGLE_TOP
;
Log.v(tag, "onClick()");
意图=新意图(这个,
tag.endsWith("ActivityA") ? ActivityB.class
: ActivityA.class);
意图.setFlags(标志);
开始活动(意图);
}
@覆盖
受保护的无效onNewIntent(意图意图){
Log.v(tag, "onNewIntent()");
}
}
公共类 ActivityB 扩展 ActivityA {
}
活动>
活动>
应用>
清单>
【问题讨论】:
标签:
android