2017-10-13 78 views
1

我有一個活動讓它稱爲活動A,它在創建時從數據庫下載一些數據。數據存儲在一個名爲myData的自定義ArrayList中。啓動另一個活動在之前的活動中,arraylist會發生什麼

當用戶點擊按鈕時,啓動另一個名爲B的活動。活動A將一些數據傳遞給活動B,我可以通過讓我的類實現Parcelable來實現這一點。

我的理解是當活動B展開時,活動A將處於onPause或onStop狀態。我的問題是,當Activity B關閉並且焦點返回到Activity A時,我的arraylist myData是否仍然存在?如果沒有,我怎麼能存儲這些數據?

+1

如果活動停留在onPause() - 「用戶返回到活動」的情況,那麼這沒有問題。但是,如果它在onStop()中 - 「用戶導航到Activity」就是這種情況,那麼下一個調用的方法將是onRestart()。 ArrayList將被重新創建(並且之前的值將丟失)。 –

+0

@ModularSynth如果活動A進入onStop狀態。有沒有保留我的arrayList數據?即我不想重新創建arrayList onRestart? – mHelpMe

+0

如果你不殺死並重新啓動你的Activity(你不通過onCreate()方法),那麼很可能是。但是將ArrayList序列化到文件會更安全。以防萬一。你知道,這些有趣的用戶...他們喜歡旋轉他們的設備。 –

回答

1

是的,您可以使用finish()方法完成您ActivityB。當你回到ActivityA時,arrayList的數據將會存在。我會建議將arrayList聲明爲ActivityA的實例變量,並在onCreate()方法中獲取數據。所以數據會一直存在直到活動被破壞,所以當活動聚焦時數據將不會被再次獲取。

2

只要您啓動新的活動,以前的活動就進入onStop狀態。

onStop定義:

當活動不再對用戶可見調用,因爲 另一個活動已經恢復並且覆蓋這一個。這可能是因爲一個新的活動正在開始,現有的 被帶到這個活動的前面,或者這個活動正在被銷燬。

看到這個圖表

enter image description here

現在,當你回到ActivityA,數組數據將仍然存在。因此,當活動切換髮生時,一旦活動A再次啓動,該數據不會被銷燬並重新創建。

相關問題