ViewPager的封装三:内存优化

从三方面进行内存优化:Handler,界面复用,生命周期。
摘要由CSDN通过智能技术生成
1、Handler不销毁

Handler可能出现内存泄漏问题(Activity的生命周期没有Handler的生命周期大),如果Handler不销毁,那么Handler就会一直执行,activity就不会销毁,可以在startScroll()方法中添加Log,然后退出当前Activity,查看该Log是否一直在打印。

解决思路:当Activity退出时,会调用onDetachedFromWindow()方法,我们在这里将Handler移除即可。

    @Override
    protected void onDetachedFromWindow() {
        mHandler.removeMessages(SCROLL_MSG);
        mHandler = null;
        super.onDetachedFromWindow();
    }

ViewPager源码也是这么做的:

    @Override
    protected void onDetachedFromWindow() {
        removeCallbacks(mEndScrollRunnable);
        // To be on the safe side, abort the scroller
        if ((mScroller != null) && !mScroller.isFinished()) {
            mScroller.abortAnimation();
        }
        super.onDetachedFromWindow();
    }
2、界面复用
    mBannerView.setAdapter(new BannerAdapter() {
        @Override
        public View getView(int position) {
            String url = result.get(position).getBanner_url().getUrl_list().get(0).getUrl();
            ImageView iv = new
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值