两个活动中的android launchMode =“singleTop”

时间:2014-10-05 10:53:19

标签: android android-activity

我的应用中有两个活动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"个属性。

1 个答案:

答案 0 :(得分:0)

如果有人感兴趣,我已设法在应用中实施两个singleTop活动行为。但它反直觉地工作奇怪。

使用上面的代码,我删除了Activity B的singleTop属性。

所以,当从活动C反印时,

A - > B - > C,

背压然后它应该是

A - > B - > B,

但由于某些原因我不明白,它只是

A - >乙

适用于4.2.2。