2012-09-07 29 views
5

感謝的問題看書,雖然是真的小白上下的一個...重複活動的初始化和內存使用情況

如何Android系統的管理內存,關於活動的初始化,特別是如果一個活動是通過其他初始化活動?這一直在我的腦海了一段揮之不去的問題,但我會嘗試用一個例子來說明:

說我有3個活動 - 一個Ç - 與活動是第一次啓動應用程序時啓動的應用程序。現在,讓我們說活動一個有按鈕導航到活動Ç,這些活動都使用Android的startActivity()功能,傳遞一個Intent實例啓動。同樣,讓我們​​說活動BC有按鈕來啓動他們的對手活動......到目前爲止有意義嗎?現在

,如果我然後使用startActivity():從活動

  • 開始活動
  • 然後從活性乙開始活動Ç
  • 然後啓動活動A活動C
  • 然後重複上面的步驟無限期(這樣兜兜轉轉)

...會是公平的假設,Android系統將「知道」的活動已經事先和止跌開始不會重新初始化它們並殺死越來越多的內存,而是調用類似onRestart()的功能,而不是「切換」回活動的已初始化實例?

對於一個非常簡單的問題/問題的解釋很...如果這已經被問及在別的地方回答...我無法在其他任何地方找到明確的答案,即使通過閱讀Android training部分Android開發者網站。

回答

7

答案是:這要看。 :-)

如果您使用的活動一個ç標準設置,應用程序將耗盡內存。原因在於Android會將每個活動保留在「後退堆棧」中,以允許用戶通過按下後退按鈕導航回去。

但是,如果你在AndroidManifest.xml文件中設置你的活動的android:launchModesingleTop那麼Android將通過路線在活動中調用onNewIntent()的意圖,以活動的運行實例。

有關啓動模式,您可以在Android Developer Documentation中閱讀更多關於它的信息。

+0

感謝您的信息尼古拉斯,非常感謝!我會對你的建議進行一些調查,希望能儘快得到一些反饋! –

+0

非常歡迎。 – Nicholas

+0

看起來是我正在尋找的......再次感謝! :) –

相關問題