我的应用中有两个活动android:launchMode="singleTop"
。它按预期工作。
我拥有singleTop
的目的是部分更新它们,而无需从头开始重新创建整个活动。样本执行就像这样。
A - >乙
当从B反向时,A中的显示被更新。
A - > B - > ç
当从C反向时,B中的显示被更新。
然而,当我在活动B位于顶部(从C背面反转)时翻转显示屏以触发方向更改时,B被神秘地摧毁并且显示为A.为什么会这样? android是否允许多个活动具有singleTop
行为?如果方向发生变化,我是否应该将其他标志从C传递到B以防止B关闭?
以上功能的代码:
ActivityA
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
@Override
protected void onResume() {
super.onResume();
Intent intent = getIntent();
if(intent.hasExtra(UPDATE_ARG)) {
...
}
}
ActvitiyB
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(this, ActivityA.class);
intent.putExtra(ActivityA.UPDATE_ARG, true);
startActivity(intent);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
@Override
protected void onResume() {
super.onResume();
Intent intent = getIntent();
if(intent.hasExtra(UPDATE_ARG)) {
...
}
}
ActivityC
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(this, ActivityB.class);
intent.putExtra(ActivityB.UPDATE_ARG, true);
startActivity(intent);
}
在清单文件中,ActivityA和ActivityB都定义了android:launchMode="singleTop"
个属性。
答案 0 :(得分:0)
如果有人感兴趣,我已设法在应用中实施两个singleTop活动行为。但它反直觉地工作奇怪。
使用上面的代码,我删除了Activity B的singleTop属性。
所以,当从活动C反印时,
A - > B - > C,
背压然后它应该是
A - > B - > B,
但由于某些原因我不明白,它只是
A - >乙
适用于4.2.2。