我正面临内存泄漏,因为某些片段没有被删除。我有使用 Fragment F1 填充视图的 Activity。该片段具有与之关联的 ViewPager 和 FragmentStatePagerAdapter。适配器正在使用另一个 Fragment F2 感觉寻呼机。当我在活动中删除 Fragment F1 时,问题就开始了。现有的 Fragments F2 不会被删除。
有什么建议么?
我正面临内存泄漏,因为某些片段没有被删除。我有使用 Fragment F1 填充视图的 Activity。该片段具有与之关联的 ViewPager 和 FragmentStatePagerAdapter。适配器正在使用另一个 Fragment F2 感觉寻呼机。当我在活动中删除 Fragment F1 时,问题就开始了。现有的 Fragments F2 不会被删除。
有什么建议么?
不确定这是否是同一个问题,但前段时间我遇到了 viewpager 的问题,其中片段生命周期方法从未被调用,问题出在片段管理器上。
因此,当您创建适配器时,请尝试传递 childFragmentManager 而不是 supportFragmentManager 并查看它是否可以解决您的问题。
我在这里面临同样的问题。在研究了很长时间如何以“正确”的方式纠正它之后,我无法让它发挥作用。F2
因此,在从我的活动中删除F1
父片段(带有片段事务)之前,我被迫显式释放所有s 片段。
// 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
回调也被调用。
我有完全一样的问题。尝试将片段 F1 移回活动中。这可能会帮助您确定问题是否是在片段中有片段。Android 真的不喜欢这样。如果我发现我身边的东西,我会告诉你