试一试handler的activity弱引用
时间: 2023-09-24 08:05:42 浏览: 39
好的,我来给你写一个使用弱引用的 Handler 示例代码:
```
public class MyActivity extends AppCompatActivity {
private MyHandler mHandler = new MyHandler(this);
private static class MyHandler extends Handler {
private WeakReference<MyActivity> mActivity;
public MyHandler(MyActivity activity) {
mActivity = new WeakReference<>(activity);
}
@Override
public void handleMessage(Message msg) {
MyActivity activity = mActivity.get();
if (activity != null) {
// 处理消息
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 发送消息
mHandler.sendEmptyMessage(0);
}
}
```
在这个示例中,我们创建了一个 `MyHandler` 类,它包含了一个对 `MyActivity` 的弱引用。在 `handleMessage` 方法中,我们首先获取到弱引用指向的 `MyActivity` 实例,如果实例不为空,则可以处理消息。这样,即使 `MyActivity` 被销毁了,由于使用了弱引用,`MyHandler` 依然可以正常工作,避免了内存泄漏的问题。