2014-10-05 73 views
0

我有两个活动在我的应用程序中有android:launchMode="singleTop"。它按预期工作。android launchMode =“singleTop”in two activities

我的singleTop的目的是部分更新它们,而不必重新创建整个活动。样例执行是这样的。

A→B

当从B回压时,A中的显示被更新。

A - >乙 - “ç

选自C backpressed时,在乙显示被更新。

但是,当我在显示屏上触发一个方向改变而活动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

如果有人有兴趣,我已经设法在应用程序中实现两个singleTop活动行为。但它的运作奇怪地违反了直觉。

使用上面的代码,我除去活性B的singleTop属性

因此,从活动Çbackpressing时,

A - >乙 - > C,

backpress那么它应该是

A - >乙 - > B,

,但由于某种原因,我不明白,这只是

A→B

它适用于4.2.2。