试试用Android写一个handler弱引用的工具类
时间: 2023-08-27 11:03:45 浏览: 156
好的,下面是一个简单的 Android Handler 弱引用工具类:
```java
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import java.lang.ref.WeakReference;
public class WeakHandler<T> extends Handler {
private WeakReference<T> mRef;
public WeakHandler(T ref) {
mRef = new WeakReference<>(ref);
}
public WeakHandler(T ref, Looper looper) {
super(looper);
mRef = new WeakReference<>(ref);
}
@Override
public void handleMessage(Message msg) {
T ref = mRef.get();
if (ref != null) {
handleMessage(ref, msg);
}
}
protected void handleMessage(T ref, Message msg) {
// Override this method to handle messages
}
}
```
使用方法:
1. 创建一个 Handler 弱引用对象
```java
WeakHandler<MyActivity> handler = new WeakHandler<>(this);
```
2. 通过 handler 发送消息
```java
handler.sendMessage(Message.obtain());
```
3. 在 `handleMessage` 方法中处理消息
```java
@Override
protected void handleMessage(MyActivity ref, Message msg) {
switch (msg.what) {
// handle messages
}
}
```
这样可以有效避免 Handler 引起的内存泄漏问题。
阅读全文