Handler简便使用归纳

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/S43565442/article/details/78914611

为防止Handler内存溢出,使用弱引用方法。但每次使用都要写一堆代码,为了减少代码和方便高效工作,特此以记录,也希望能给需要的朋友一滴滴帮助。
在BaseActivity中:

public abstract class BaseActivity extends AppCompatActivity {
    public MyHandler mHandler;
    public static class MyHandler extends Handler {
        WeakReference<BaseActivity> wrf = null;
        public MyHandler(BaseActivity baseActivity) {
            wrf = new WeakReference<>(baseActivity);
        }
        @Override
        public void handleMessage(Message msg) {
            BaseActivity baseActivity = wrf.get();
            if (baseActivity == null) {
                return;
            }
            baseActivity.doMessage(msg);
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mHandler.removeCallbacksAndMessages(null);
    }

    public void doMessage(Message msg) {
    }

    public void removeMessages(int what) {
      if (mHandler != null && mHandler.hasMessages(what)) {
            mHandler.removeMessages(what);
        }
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mHandler = new MyHandler(this);
    }
 }

然后再Activity中使用就方便了许多:

mHandler.sendEmptyMessage(1);
复写父类方法:
 @Override
 public void doMessage(Message msg) {
     switch (msg.what) {
         case 1:
           //你自己的逻辑代码
          break;
         case 2:
           //...
         break;
        }
    }

猜你喜欢

转载自blog.csdn.net/S43565442/article/details/78914611