我面臨內存泄漏,因爲某些片段未被刪除。我有活動,與片段F1填充視圖。該片段具有與之關聯的ViewPager和FragmentStatePagerAdapter。適配器與另一個片段F2感覺尋呼機。問題在Activity中刪除Fragment F1時開始。現有碎片F2不會被刪除。FragmentStatePagerAdapter不刪除父母片段中的片段
有什麼建議嗎?
我面臨內存泄漏,因爲某些片段未被刪除。我有活動,與片段F1填充視圖。該片段具有與之關聯的ViewPager和FragmentStatePagerAdapter。適配器與另一個片段F2感覺尋呼機。問題在Activity中刪除Fragment F1時開始。現有碎片F2不會被刪除。FragmentStatePagerAdapter不刪除父母片段中的片段
有什麼建議嗎?
我有完全相同的問題。嘗試將你的碎片F1移回到一個活動中。這可以幫助您確定問題是否在片段中有片段。 Android並不是那麼喜歡。如果我在我身邊發現了一些東西,我會讓你知道
不知道它是否是同一個問題,但是前一段時間,我對viewpager有一個問題,那裏的fragment生命週期方法從來沒有調用過,問題是片段管理器。
因此,當您創建適配器時,請嘗試傳遞childFragmentManager而不是supportFragmentManager並查看它是否修復了您的問題。
我在這裏面臨同樣的問題。在長時間研究如何以「正確」的方式糾正它之後,我無法完成它的工作。所以我不得不在我的活動中刪除F1
父片段(帶有片段事務)之前顯式釋放所有F2
的片段。
// Remove all content from the FragmentStatePagerAdapter instance.
myAdapter.Content.Clear(); // Content here may be an ArrayList in Java or a List in C#.
myAdapter.NotifyDataSetChanged();
// Reset current empty adapter inside the ViewPager (this will make all existing F2 fragments to be released).
myViewPager.Adapter = myAdapter;
// Do the transaction removing the parent F1 fragment from the main Activity.
FragmentManager.BeginTransaction()...
通過以下步驟,所有F2
片段開始釋放形式的內存和他們也有他們的OnPause
,OnDestroyView
...被調用OnDestroy
回調也是如此。