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