自己写的一个类继承自handler。
想的是从服务器读一张图片,然后用Bitmap存一下,通过handler传给主线程来显示图片
private static class LoadHandler extends Handler {
WeakReference reference;
public static final int LOAD_PIC = 1;
public LoadHandler(WeakReference<articleDetail> reference) {
this.reference = reference;
}
@Override
public void handleMessage(@NonNull Message msg) {//方法没有调用
articleDetail ad = (articleDetail) reference.get();
switch (msg.what) {
case LOAD_PIC:
ad.down_bitmap = (Bitmap) msg.obj;
Log.d("loadPIC","load over");
break;
}
}
}
在activity中声明变量 这个activity运行在主线程中·
这一个activity是从上一个activity跳转过来的
public class articleDetail extends AppCompatActivity {
private TextView author, time;
private ImageButton back;
private CircledownloadProgressBar bar;
private HyperTextView rtext_view;
private Bitmap down_bitmap;
private Article article;
private LoadHandler mhandler = new LoadHandler(new WeakReference<>(articleDetail.this));
发送Message是在从网上下载图片的一个方法里
private void Down_pic(String path) {
new Thread(new Runnable() {
@Override
public void run() {
OkHttpClient okHttpClient = new OkHttpClient();
RequestBody body = new FormBody.Builder()
.add("type", ServiceType.down_pic)
.add("path", path)
.build();
Request request = new Request.Builder()
.url(getString(R.string.down_fileAdress))
.post(body)
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
InputStream inputStream = response.body().byteStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Message msg = Message.obtain();
msg.obj = bitmap;
msg.what = LoadHandler.LOAD_PIC;
Boolean is = mhandler.sendMessage(msg);
Log.d("sendMsg", is.toString());
}
});
}
}).start();
}
handleMessage方法不执行
sendMessage返回的值是true
打断点debug也进不去handleMessage方法
求大佬帮忙看看 非常感谢!!