这段MQTT代码怎么不执行呢

这段MQTT代码怎么不执行呢?Log也没有打印,也没有弹窗显示


 handler = new Handler() {
            @SuppressLint("SetTextI18n")
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                switch (msg.what){
                    case 1: //开机校验更新回传
                        break;
                    case 2:  // 反馈回传

                        break;
                    case 3:  //MQTT 收到消息回传   UTF8Buffer msg=new UTF8Buffer(object.toString());
                        Toast.makeText(MainActivity.this,msg.obj.toString() ,Toast.LENGTH_SHORT).show();
                        Log.v("MainActivity","handSwitch1");
                        text_test.setText(msg.obj.toString());
                        break;
                    case 30:  //连接失败
                        Log.v("MainActivity","handSwitch2");
                        Toast.makeText(MainActivity.this,"连接失败" ,Toast.LENGTH_LONG).show();
                        break;
                    case 31:   //连接成功
                        Log.v("MainActivity","handSwitch3");
                        Toast.makeText(MainActivity.this,"连接成功" ,Toast.LENGTH_LONG).show();
                        try {
                            client.subscribe(mqtt_sub_topic,1);
                        } catch (MqttException e) {
                            e.printStackTrace();
                        }
                        break;
                    default:
                        break;
                }
            }
        };
  • 建议你看下这篇博客👉 :转战物联网·基础篇07-深入理解MQTT协议之控制报文(数据包)格式
  • 除此之外, 这篇博客: 物联网通信消息队列客户端-MQTT简介中的 6.1 保留消息 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • RetainedMessagesMQTT中,无论是发布还是订阅都不会有任何触发事件。1个Topic只有唯一的retain消息,Broker会保存每个Topic的最后一条retain消息。发布消息时把retain设置为true,即为保留信息。每个Client订阅Topic后会立即读取到retain消息。如果需要删除retain消息,可以发布一个空的retain消息,因为每个新的retain消息都会覆盖最后一个retain消息。