通过意图回到第一个活动,活动堆栈会发生什么?

时间:2012-04-30 15:32:14

标签: android android-activity stack

我有一个应用程序从网络服务器提取数据,将这些数据放在列表视图中,然后将其呈现给用户。涉及4个活动,可以这样调用:

A - > B - > C - > d

A - > B - > d

除A之外,所有活动基本上都是从网上提取数据。如果连接出现任何问题,并且出现超时,我希望活动B,C和D通知用户并返回A。

所以我现在做的是,我将A设置为启动模式singleTask。这样我就可以捕获超时异常并从A开始调用一个新的意图。但是两者之间的活动会发生什么?假设我正在呼叫A-> B-> C-> D,然后在D中连接超时。现在该应用程序将回到A,但是B和C呢? android会自动调用onDestroy吗?活动堆栈会发生什么?任何提示都赞赏。

干杯

2 个答案:

答案 0 :(得分:2)

当你从活动D启动活动A时,设置意图标志:

FLAG_ACTIVITY_CLEAR_TOP

使用此标志将清除A与您所在活动之间的所有活动,将A带到前面。您也可能不需要将singleTask用作启动模式。

答案 1 :(得分:1)

  

假设我正在呼叫A-> B-> C-> D,然后在D中连接超时。现在该应用程序将返回A ...

以您的示例为例,如果所有子活动都是使用startActivityForResult()和活动B& C器目:

finishFromChild(Activity activity) {
    ...
    finish();
} 

当活动D在超时后调用finish()时,每个孩子将按顺序关闭(D - > C - > B - > A)并有机会返回您可能想要的任何相关数据打捞。