安卓子线程中,Handler绑定主线程Looper后,发送Message,主线程未收到

安卓子线程中,Handler绑定主线程Looper后,发送Message,主线程未收到
  //子线程
 public static void reqImg(String url){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                        URL Url=new URL(url);
                        Bitmap bitmap = BitmapFactory.decodeStream(Url.openStream());
                        Handler handler=new Handler(Looper.getMainLooper());
                        Message msg=handler.obtainMessage(com.example.xingyi.ui.Handler.TOOL_BAR_IMG,bitmap);
                        handler.sendMessage(msg);
                        Log.d("http","send");
                }catch (Exception e){
                    Log.e("http",e.getMessage());
                }
            }
        }).start();

//主线程
 @Override
    public void handleMessage(@NonNull Message msg) {
        super.handleMessage(msg);
        switch (msg.what){
            case TOOL_BAR_IMG:    // 静态整型常量
                BitmapDrawable drawable=new BitmapDrawable((Bitmap) msg.obj);
                fragment.getToolbarLayout().setBackground(drawable);
                Log.d("http","rec");      //打印接收标志
                break;
    
            default:
                Toast.makeText(context, "MessageCodeError", Toast.LENGTH_SHORT).show();
        }

img


没有打印rec,说明没接收到

子线程在Handler构造时调用Looper的静态方法获取主线程Looper,然后直接发送,主线程的Handler初始化了并绑定了主线程的Looper
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

message.target 它的主线程 handler 不是同一个,所以你收不到

代码看上去合法
无法确定为什么主线程没有收到消息
添加打印语句检查是否有异常发生
在消息被接收之前检查日志是否有send语句被打印
这表明消息已经被发送但在主线程没有收到之前被更新

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^