版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
}