MvpApp icon indicating copy to clipboard operation
MvpApp copied to clipboard

是否需要在BaseFragment 的 ondestroyView里面移除mRootView

Open taixiang opened this issue 7 years ago • 5 comments

taixiang avatar Aug 23 '17 14:08 taixiang

hello,在BaseFragment 的 onCreateView里

ViewGroup parent = (ViewGroup) mRootView.getParent();
        if (parent != null) {
            parent.removeView(mRootView);
        }

有这段移除rootview的但是一直没有执行到,请问是否需要把这段父布局移除rootview的代码移到 ondestroyView里面

taixiang avatar Aug 23 '17 14:08 taixiang

不用,销毁的时候mRootView也会销毁

Rukey7 avatar Aug 23 '17 15:08 Rukey7

我的场景是viewpager + fragment,有rootview的复用满足了需求,个人比较好奇rootview在什么时候销毁的 , 对应的Fragment ondestroy走了,rootview依然存在的 , viewpager用的FragmentStatePagerAdapter

taixiang avatar Aug 24 '17 01:08 taixiang

按我的理解,fragment的生命周期由FragmentStatePagerAdapter控制,在FragmentStatePagerAdapter里保存了你添加的每个fragment,虽然调用了ondestroy,但是fragment对象并没有被销毁,所以rootview依然存在

Rukey7 avatar Aug 25 '17 02:08 Rukey7

这种写法,在fragment 嵌套中 Leakcanary 会一直报内存泄漏。

jiaowenzheng avatar Jan 21 '19 07:01 jiaowenzheng