2014-10-26 107 views
1

找不到直接回答這個,所以我會問這裏。彈出後端堆棧時,碎片會被破壞嗎?

如果我有與片段A開始時被壓上的一個按鈕它替換片段A與片段B. A添加到後堆連接,然後一個活動。如果後退按鈕被按下,它將從B返回到A,但我想知道片段B是否會被破壞?因爲從技術上來說,活動不是這樣嗎?即使在後退堆棧彈出時,我也需要顯式移除片段B?

感謝您的閱讀

回答

4

根據Android API,它不會被銷燬,它會被停止。 http://developer.android.com/guide/components/fragments.html#Lifecycle

處理片段生命週期

停止
片段是不可見的。主機活動已停止或片段已從活動中刪除,但已添加到後端堆棧。停止的片段仍然存在(所有狀態和成員信息由系統保留)。但是,用戶不再可見,並且如果活動被終止,將會被殺死。

+0

大,由於這樣我應該刪除的片段(片段交易刪除),因爲如果片段B不會再次使用,我可以刪除它並節省內存,因爲正如你所說的成員inf o是否保留,所以它可以是GC正確的? – user3364963 2014-10-26 19:20:27

+0

如果你刪除了它的片斷,它將不會被垃圾收集。如果你想釋放內存調用.popBackStack()在你的片段經理,你已刪除後,從堆棧中刪除它。 – 2014-10-26 20:34:31

0

不,它不被破壞,其停止

它的狀態是這樣的 (同時交互)調用一次的片段與其活動相關 1)onAttach(活動)。 2.)的onCreate(束)稱爲做片段的初始創建。 3.)onCreateView(LayoutInflater,ViewGroup中,束) 4.)onActivityCreated(束) 5.)onViewStateRestored(束) 6.)在onStart() 7.)的onResume()

同時不相互作用 1。)的onPause() 2.)的onStop()
3.)onDestroyView() 4.)的onDestroy() 5.)onDetach()