堆栈中只有一次相同的活动

时间:2017-04-29 10:43:29

标签: android

我无法让以下工作。

活动: A(启动器活动),B(图片活动),C(UserProfile活动)

用户行为:A - > B1 - > C - > B2(B1 / B2是相同的活动,但不同的图片。)

按下后退按钮时我想要发生什么:B2 - > C - >甲

我必须使用哪个FLAG启动活动B?到目前为止我尝试过的是什么让我得到了错误的结果

  • FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK :B2 - >应用已关闭
  • FLAG_ACTIVITY_NEW_TASK :B2 - > C - > B1 - >一个
  • FLAG_ACTIVITY_CLEAR_TOP :B2 - > A
  • FLAG_ACTIVITY_REORDER_TO_FRONT :此FLAG确实启动B1而不是B2,因为活动B已经在堆栈中。它看起来很有希望,因为当回到它的B1 - > C - > A.我是否必须将此FLAG与另一个FLAG结合使用?我不想将B1重新排序到堆栈顶部,但是将其删除并启动B2。

UserProfile活动在没有任何标志的情况下启动。任何帮助赞赏。

1 个答案:

答案 0 :(得分:1)

正如你所说的那样,{p> FLAG_ACTIVITY_REORDER_TO_FRONT看起来很有希望。它再次启动相同的活动,但在历史堆栈中移动它。

首先,这将恢复原始状态(图片B1),但您确实在活动B中收到新的Intent。使用此更新数据:

@Override
public void onNewIntent(Intent newIntent) {
    super.onNewIntent(newIntent)
    // update picture here from new newIntent
}

还有其他选择,例如在清单中将singleInstance设置为launchmode。但他们都归结为使用onNewIntent来更新内容。