使用静态内部类 加 弱引用 (静态内部类默认不持有外部引用)
private static class MyHandler extends Handler {
private WeakReference<WeatherStationActivity> weakReference;
public MyHandler(WeatherStationActivity activity) {
this.weakReference = new WeakReference<WeatherStationActivity>(activity); // 弱引用持有Activity
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
WeatherStationActivity weatherStationActivity = weakReference.get();
switch (msg.what) {
case 0:
String s = (String) msg.obj;
break;
default:
break;
}
}
}
使用
myHandler = new MyHandler(WeatherStationActivity.this);
String a = "null";
Message msg = Message.obtain();
msg.obj = a;
msg.what = 0;
myHandler.sendMessage(msg);
在页面关闭时及时清除 Handler的 回调 和 消息
@Override
protected void onDestroy() {
super.onDestroy();
myHandler.removeCallbacksAndMessages(null);
}