一起Talk Android吧(第五百二十四回:在Android中使用MQTT通信六)


各位看官们大家好,这一回中咱们说的例子是" 在Android中使用MQTT通信六",本章回内容与前后章节内容无关联。闲话休提,言归正转,让我们一起Talk Android吧!

我们在之前介绍了Paho MQTT Client Java版本的用法,并且分享了项目中遇到的相关问题。本章回中对之前的用法做一些补充。

缓冲数据

缓冲数据是一种客户端的参数,我们最开始介绍它时只是简单地创建一个缓冲对象,该对象把数据存放在了内存中,如果想查看的话比较很不方便,也可以把缓冲数据存放在硬盘上。下面是具体的操作方法。

此外,它除了用来存放故障信息外还可以缓冲Topic中的没有传递的消息,等待Client上线时会自动把缓冲中的消息传递给Client.

  mPersistence = new MemoryPersistence();   //缓冲数据存放在内存中

  //临时目录地址:/data/user/0/com.xx.xx/cache,xxx是app的包名
  String tmpDir = System.getProperty("java.io.tmpdir"); //缓冲数据存放在硬盘上的临时目录中
  mPersistence = new MqttDefaultFilePersistence(tmpDir);
  mMqttClient = new MqttClient(serverURL,mClientId,mPersistence);

关于session

我们在前面章回中介绍过它的用法,这里再次补充,因为有些看官很容易用错,下面是示例代码:

mMqttConnectOptions.setCleanSession(true);   //关闭session功能
mMqttConnectOptions.setCleanSession(false);  //打开session功能

比如我们想关闭服务器的session功能,那么需要把客户端连接参数的session值设定为true,有客户以为设置为false就是关闭了,其实正好相反。

还有一点需要和大家补充说明:如果把session值的设定为false,那么需要QOS的值大于0才可以,不然还是无法使用session功能。比如,客户端与服务器的连接断开后无法收到服务器发送的消息,我们称其为离线消息,如果打开session功能并且把QOS的值设定为大于0,那么等到下一次客户端与服务器连接时会自动收到服务器发送的离线消息。

监听连接状态

在实际使用时MQTT的客户端可能会与服务器断开连接,我们可以通过回调接口监听客户端与服务器的连接状态,详细如下:

   mMqttCallback = new MqttCallback() {
        @Override
        public void connectionLost(Throwable cause) {
            Log.d(TAG, "connectionLost: ");
            if(cause != null ) {
                Log.d(TAG, "connectionLost: exception reason: " + cause.getMessage() + " " + cause.toString());
            }
        }

        @Override
        public void messageArrived(String topic, MqttMessage message) throws Exception {
        }

        @Override
        public void deliveryComplete(IMqttDeliveryToken token) {
        }
    };

上面的代码创建了一个MqttCallback类型的对象,创建对象时重写connectionLost()方法就可以监听到客户端与服务器的连接状态。我们可以在日志中打印出错误信息和原因,方便我们找到连接断开的原因。

看官们,关于"在Android中使用MQTT通信六"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值