2014-10-26 45 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()