场景:B类刷新A类中的UI,如果一个后台加载图片的线程刷新activity中的图片。
发送:
public String loadVideoInfoImage(VideoInfo video, ImageView imageView,
TextView textView) {
Message msg = handlerImage.obtainMessage();
msg.what = 1;
msg.obj = new Object[] { video, imageView, handler, textView };
handlerImage.sendMessage(msg);
return getVideoInfoCachePath(video);
}
如上 A类中调用B类loadVideoInfoImage方法传入3个参数,然后B类通过HandlerThread,msg传递3个对象,1自定义的实体类VideoInfo 2,ImageView 3,TextView,可以避免使用全局变量。
接收:
private void handleMessageDo(Message msg) {
if (msg.obj != null) {
if (msg.obj instanceof Object[]) {
Object[] objs = (Object[]) msg.obj;
if (objs[0] instanceof VideoInfo2) {
loadWriteVedioImage((VideoInfo2) objs[0],
(ImageView) objs[1], (Handler) objs[2],
(TextView) objs[3]); // 加载并写入图片
}
}
}
}
关键是这句:
msg.obj = new Object[] { video, imageView, handler, textView };