Handler 销毁写法
时间: 2023-08-08 17:04:28 浏览: 131
android 中Handler 的几种写法
Handler 销毁主要有两种写法:
1. 在 Activity 或者 Fragment 的 onDestroy 方法中调用 removeCallbacksAndMessages 方法清除 Handler 所有未执行的任务,避免内存泄漏。示例代码如下:
```
@Override
protected void onDestroy() {
mHandler.removeCallbacksAndMessages(null);
super.onDestroy();
}
```
2. 使用静态内部类 WeakHandler 来避免内存泄漏。该类继承自 Handler,但是不会持有外部类的引用,从而避免内存泄漏。示例代码如下:
```
public class MyActivity extends Activity {
private final MyHandler mHandler = new MyHandler(this);
private static class MyHandler extends WeakHandler<MyActivity> {
public MyHandler(MyActivity activity) {
super(activity);
}
@Override
public void handleMessage(Message msg) {
MyActivity activity = getReference().get();
if (activity != null) {
// 处理消息
}
}
}
@Override
protected void onDestroy() {
mHandler.removeCallbacksAndMessages(null);
super.onDestroy();
}
}
```
其中,WeakHandler 是一个静态内部类,继承自 Handler,通过弱引用来持有外部类的引用。在 handleMessage 方法中,通过 getReference 方法获取外部类的实例,如果外部类不为空,则处理消息。在 Activity 或者 Fragment 的 onDestroy 方法中,调用 mHandler 的 removeCallbacksAndMessages 方法清除 Handler 所有未执行的任务。
阅读全文