2010-01-20 105 views
1

我有以下内容:Android:搬运活动堆栈

活动A, B, C, DAD可以在任何时间,任何地点从应用程序到达。

BC均达到这样的:

A -> B -> C 

我有以下的用例:

用户输入CA -> B -> C)然后她去了D

当她想要去A时,我想将她转移到已从A开始的队列 - 换句话说,我想让她去开始的C

类似这样的A -> B -> C -> D -> (same) C。但我不想从活动堆栈中丢失D。之后,当她按下“后退”按钮时,她又被转移到D

这是可能和正确的吗?最佳做法是什么?

如果我没有足够清楚地解释我的情况,请随时提问。
提前10倍,
丹纳伊

回答

3

不幸的是,你不能这样做。 The documentation says the following

注意的是,当一个新的活动实例被创建来处理新的意图,用户可以随时按返回键,返回到以前的状态(以前的活动)。但当活动的现有实例处理新的意图时,在新意图抵达之前,用户不能按BACK键返回该实例正在进行的操作。

基本上你不能在同一时间在堆栈中的两个地方有同样的Activity C实例。

但是,您可以通过将Activity C的临时状态保存到Application object来使您的应用程序看起来就是这种情况。这将允许活动C的所有实例共享状态,并且看起来好像它们是相同的实例。

您需要创建Application的自己的子类,然后从onResume()onPause()的Activity C中读取并写入它。

+0

10x!我会尝试的。 – Danail 2010-01-22 14:30:28

+0

其实,从另一个答案只是张贴这一点,有一种方法可以做到这一点: “你可以试试这个FLAG_ACTIVITY_REORDER_TO_FRONT(该文件描述正是你想要什么) http://developer.android.com/reference/ android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT“ – Danail 2010-10-25 14:10:50

+0

@Danail - 这并不完全符合你的要求。它会将顺序改为“A→B→D→C”,这意味着从活动D回退会将用户带到“B”。 (我认为无论如何都是阅读文档,我没有尝试过。) – 2010-10-25 14:46:03