使用弱引用。
自定义的静态handler类:
// 自定义handler
private static class MHandler extends Handler {
private final WeakReference<MainActivity> mActivity;
MHandler(MainActivity activity) {
mActivity = new WeakReference<>(activity); // 弱引用
}
@Override
public void handleMessage(Message msg) {
MainActivity activity = mActivity.get();
if (activity != null) {
switch (msg.what) {
case FINISHED_SPK:
activity.Next(); //函数
break;
case IMAGE_IS_READY:
String url = msg.getData().getString("url");
if (url != null && !url.isEmpty()) {
Glide.with(activity) // 装载图像
.load(url)
.into(activity.m_step_img);
}
String info = msg.getData().getString("info");
if (info != null && !info.isEmpty()) {
activity.m_step_text.setText(info); // 显示文本
}
break;
}
}
}
在消息处理中,对mActivity中的变量,View进行数据交换。
定义变量:
private MyHandler mHandler = new MyHandler(this); // 传递activity
若包内类要访问mHandler,就去掉private。