2

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

A -> B -> C -> D

或者

A -> B -> D

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

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

干杯

4

2 回答 2

2

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

FLAG_ACTIVITY_CLEAR_TOP

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

于 2012-04-30T15:39:00.933 回答
1

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

以您的示例为例,如果所有子活动都是使用 startActivityForResult() 启动的,并且活动 B & C 实现:

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

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

于 2012-04-30T15:53:00.867 回答