Android中的弱引用(WeakReference)

 

  • 弱引用,其实弱字说明了一切——容易被销毁(GC);举个例子在Handler里面如果直接引用了一个对象(强引用),handler在处理一个延时任务,期间主线程被用户finish掉,但这里的对象却不能被销毁,这样造成内存泄漏,也容易造成NullPointException异常。
  • 每次GC做回收都会销毁弱引用。
  • 常用与子线程或者handler里面。
  • private static class BannerHandler extends Handler {
        private WeakReference weakReference = null;
    
        public BannerHandler(BannerView3 bannerView) {
            super(Looper.getMainLooper());
            this.weakReference = new WeakReference(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;
            }
        }
    }

你可能感兴趣的:(Android中的弱引用(WeakReference))