简单方式:在类的destory(),方法中移除所有的消息和回调
@Override
protected void onDestroy() {
super.onDestroy();
//就是移除所有的消息和回调
weakHandler.removeCallbacksAndMessages(null);
}
较完善方式:
①在内部类的构造方法中,创建一个对外部类的弱引用,然后再内部类的方法中通过弱引用获取外部类对象,进行非空判断后再进行操作
private static WeakHandler weakHandler;
private static class WeakHandler extends Handler {
private final WeakReference<MainActivity> weakReference;
public WeakHandler(MainActivity mainActivity) {
weakReference = new WeakReference<>(mainActivity);
}
@Override
public void handleMessage(Message msg) {
MainActivity mainActivity = weakReference.get();
if (mainActivity != null) {
switch (msg.what) {
case 1:
mainActivity.tvMainAddnot.setText("测试Handler的弱引用");
break;
default:
break;
}
}
}
}
②再加上简单的方式