最近在项目里踩到一个小坑,在这里记录一下。
早上时发现项目中嵌套的fragment无法销毁,但每次回到页面都会重新创建。楼主当然明白把viewpager设setOffscreenPageLimit最大的页面数或者使用fragmentpageadapter就能够避免fragment的重复创建,但这不是问题的根源,只是逃避了问题所在。
最后定位在问题在 viewpager.setOffscreenPageLimit()这行代码上,这行代码如果在viewpager.setadptaer之前运行,是不会出现问题的,但在之后运行,就会出现我所说的状况——fragment无法销毁(或者已经销毁但下次创建的时候还会继续创建该实例),导致内存泄露问题。
原因暂且不明,先记录一下。等项目结束有时间再研究。
本文记录了一个关于在项目中遇到的ViewPager与Fragment管理不当导致的内存泄露问题。具体表现为嵌套的Fragment无法正常销毁,即使设置setOffscreenPageLimit或使用FragmentPagerAdapter也未能根治。问题在于setOffscreenPageLimit调用时机不当,若在setAdapter之后调用,则会导致Fragment实例无法被正确销毁,引发内存泄露。

191

被折叠的 条评论
为什么被折叠?



