2013-07-03 38 views
0

我有一個myApp,它首先啓動ActivityA,然後ActivityA啓動ActivityB。 ActivityB非常複雜,包含3個選項卡。如何將活動保存到磁盤並在重新啓動時重新加載它

我寫了另一個killApp來調用killbackgroundprocess來殺死我的應用程序來模擬系統資源回收一些應用程序。

點擊主頁按鈕後,運行killApp殺死我的應用程序,然後再次啓動myApp。我看了一段白色的背景板,然後ActivityB被重新粉刷。

我的理解是,當單擊主頁按鈕時,myApp的活動存儲到磁盤,重新啓動時,ActivityB位於活動堆棧的頂部,因此它的onCreate被再次調用。因爲ActivityB需要一些時間來初始化它的內容,所以我在整個活動準備好之前看了一段白色背景。

我的問題是:
1.如果應用程序啓動第一次,有沒有這樣的白色背景的問題,是因爲它在應用程序啓動時,Android系統將所有資源加載到內存中,因此在創建ActivityB,它不需要等待資源被加載?

2.如何解決上述白色背景問題?我的想法是將整個活動保存到磁盤,例如將整個活動對象序列化到磁盤,然後再次調用onCreate時,對其進行反序列化。但我不知道如何實現它。有什麼建議麼?謝謝。

+0

首先,您不必編寫其他應用程序來殺死您的應用程序。你可以簡單地裝入並殺死應用程序的進程。另外請注意,Jelly Bean內置了一堆方便的開發工具,包括「不要保留活動」。如果你想查看每個活動在死亡時如何處理狀態,請啓用(設置,開發人員選項)。除此之外,請查看noisyass2指出的Activity lifecyle上的文檔(當您單擊home時,您對「存儲到磁盤上的活動的理解」不正確)。 –

回答

0
+0

謝謝你noisyass2,我看過但沒有找到答案。 – bettermanlu

+0

根據我的理解,你在ActivityB的OnCreate()上做了一些很重要的事情。這導致了'白色背景'的事情。因爲加載所有這些都需要時間。您可以嘗試使用OnPause()和OnResume()進行序列化/保存,因此它不會影響版面 – noisyass2

+0

Ya,您是對的。 OnCreate做了很多事情。但爲什麼如果應用程序是從新開始的,就沒有這樣的問題。所以,我的第一個問題。謝謝。 – bettermanlu

相關問題