Android中的弱引用(WeakReference)

 

  • 弱引用,其实弱字说明了一切——容易被销毁(GC);举个例子在Handler里面如果直接引用了一个对象(强引用),handler在处理一个延时任务,期间主线程被用户finish掉,但这里的对象却不能被销毁,这样造成内存泄漏,也容易造成NullPointException异常。
  • 每次GC做回收都会销毁弱引用。
  • 常用与子线程或者handler里面。
  • private static class BannerHandler extends Handler {
        private WeakReference<BannerView3> weakReference = null;
    
        public BannerHandler(BannerView3 bannerView) {
            super(Looper.getMainLooper());
            this.weakReference = new WeakReference<BannerView3>(bannerView);
        }
    
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (this.weakReference == null) {
                return;
            }
            BannerView3 bannerView = this.weakReference.get();
            if (bannerView == null || bannerView.mViewPager == null || bannerView.mViewPager.getAdapter() == null || bannerView.mViewPager.getAdapter().getCount() <= 0) {
                sendEmptyMessageDelayed(MSG_LOOP, LOOP_INTERVAL);
                return;
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值