旧项目内存泄漏修复

有个旧项目内存泄漏问题,用的是viewpager,页面多次跳转后,内存明显一直在增长,最后发现是viewpager中对fragment的引用导致

所以需要对adapter进行改造,不直接引用fragment,而是fragment的class


 

open class FragmentPagerAdapter : FragmentStatePagerAdapter {
    var fragmentClass: List<Class<*>> = emptyList()
    var titles: List<String>? = null

    constructor(fm: FragmentManager, list: List<BaseFragment>, titles: List<String>?) : super(fm) {
        this.titles = titles
        this.fragmentClass = list.map {
            it.javaClass
        }
    }

    constructor(fm: FragmentManager) : super(fm)


    override fun getItem(position: Int): Fragment {
        childCount = position

        return (fragmentClass.get(position).newInstance() as BaseFragment) //反射加载Fragment

    }

    override fun getCount(): Int {
        return fragmentClass.size
    }

    override fun getPageTitle(position: Int): CharSequence? {
        return titles!![position]
    }

    var childCount: Int = 0
    override fun getItemPosition(`object`: Any): Int {

        return super.getItemPosition(`object`)
    }

    override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
        super.destroyItem(container, position, `object`)
    }
}

改造之后,页面跳转内存就平稳了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值