0

我有重用一个活动未知的次数的应用程序。它运行Android应用生命周期混乱

A> B1 || C1> B2 || C2> ...

如果我走了> B1> B2> B1,我的应用程序仍显示在屏幕上的B1名单,但如果我点击它,它带我到相应的B2活动。我用来保存b的数据的arrayList需要为b的正确实例恢复。

我一直在阅读http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle 但我不认为onPause和onResume将工作,因为我再次使用相同的活动。

回答

0

这一切都取决于你的活动之间移动的方式。

当你回头或你做finish()你摧毁你的活动。在这种情况下,我相信你正在b2上做finish(),然后你回到b1。

认为像包含情况下,你的活动堆活动。您可以在堆栈中有多个相同活动的实例。

当你是一个和你去B1你的筹码保持这样的:

b1 
a 

当你去到B2,你的筹码得到这样

b2 
b1 
a 

然后,如果你做的是另startActivity()为B1你

b1 
b2 
b1 
a 

但是,如果你这样做finish()或按回到你实际上摧毁b2,你回到你从b1获得的第一个实例。请记住:在堆栈中,您有可以存储不同数据的活动实例。

+0

当我按回到活动B2,虽然,它只是从B1在UI列表。实际数据仍然是来自b2的数据。假设我在b1上有一个12345的列表。我打开显示67890的b2。回显并显示12345.如果我选择一个列表条目来记录那个点上的数据,比如说3,它记录8.来自b1的实际数据没有被恢复。 – r2DoesInc 2012-04-02 20:16:37

+0

我不知道你如何组织你的数据。但是,如果您按下栈顶上的顶级活动,并调用堆栈中下一个活动的'onResume()'。请检查你的'onResume()'看看你在做什么。还要检查您是否在提供信息或适配器的结构中进行更改。最后,请检查您的信息是否是静态的(因此可以由所有活动共享),或者您的信息是本地信息(在您的活动中)。 – 2012-04-02 20:53:45