MQTT Paho之Android service源码分析

简介: MQTT Paho之Android service源码分析

官网:


https://www.eclipse.org/paho/clients/android/


http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.java.git/


https://www.eclipse.org/paho/clients/android/sample/


libs下载链接:


mqtt java 客户端开发涉及到两个lib,分别是


1、org.eclipse.paho.client.mqttv3-1.0.2.jar


https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.client.mqttv3/


2、org.eclipse.paho.android.service-1.0.2.jar


https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.android.service/


普通的java web工程和Android开发不同。java web只需要使用第1个jar包,而Android开发则两个都要用到,因为Android需要启动后台Service组件来完成消息的发布和订阅。本文章重点讲诉的是android service,即org.eclipse.paho.android.service-1.0.2.jar。


从官网http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.java.git/可以获取到源码包org.eclipse.paho.mqtt.java-1.0.2.zip。


解压缩,里面org.eclipse.paho.mqtt.java-1.0.2\org.eclipse.paho.android.service\org.eclipse.paho.android.service就是android service的源码。org.eclipse.paho.android.service-1.0.2.jar就是通过此源码导出生成的。


一、MqttAndroidClient.java


1、Service组件


工程AndroidManifest.xml文件有Service的定义。


第390行,函数connect(),有startService和bindService的执行,启动和绑定Service与外部的Activity通信。


2、BroadcastReceiver组件


第70行,public class MqttAndroidClient extends BroadcastReceiver和第1251行的函数OnReceive(Context context, Intent intent)是配套的,用于监听广播消息。


第1435行,函数messageArrivedAction()里面有callback.messageArrived(),可以把接收来自Service的数据回调发送到用户界面的Activity里。


第442行的registerReceiver()和第1599行的unregisterReceiver()分别是注册和注销Broadcast。


IntentFilter filter = new IntentFilter();


filter.addAction(MqttServiceConstants.CALLBACK_TO_ACTIVITY);


二、MqttConnection.java


第755行,重写了MqttCallback的函数connectionLost();


第803行,重写了MqttCallback的函数deliveryComplete();


第755行,重写了MqttCallback的函数messageArrived();


该源文件出现了许多回调函数service.callbackToActivity();


三、MqttService.java


第267行,函数callbackToActivity();里面有发送广播sendBroadcast()的实现。


Intent callbackIntent = new Intent(MqttServiceConstants.CALLBACK_TO_ACTIVITY);


相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
4月前
|
Android开发
Android 11 添加Service服务SELinux问题
Android 11 添加Service服务SELinux问题
207 1
|
4月前
|
Android开发
Android基础知识:请解释Service是什么,它与IntentService的区别是什么?
Android基础知识:请解释Service是什么,它与IntentService的区别是什么?
89 0
|
3月前
|
消息中间件 存储 开发工具
消息队列 MQ产品使用合集之C++如何使用Paho MQTT库进行连接、发布和订阅消息
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3月前
|
调度 Android开发
43. 【Android教程】服务:Service
43. 【Android教程】服务:Service
40 2
|
4月前
|
Android开发
Android Service Call /dev/xxx SELinux
Android Service Call /dev/xxx SELinux
87 1
|
4月前
|
消息中间件 存储 RocketMQ
RocketMQ源码分析之事务消息实现原理下篇-消息服务器Broker提交回滚事务实现原理
RocketMQ源码分析之事务消息实现原理下篇-消息服务器Broker提交回滚事务实现原理
|
1月前
|
编解码 网络协议 Android开发
Android平台GB28181设备接入模块实现后台service按需回传摄像头数据到国标平台侧
我们在做Android平台GB28181设备对接模块的时候,遇到这样的技术需求,开发者希望能以后台服务的形式运行程序,国标平台侧没有视频回传请求的时候,仅保持信令链接,有发起视频回传请求或语音广播时,打开摄像头,并实时回传音视频数据或接收处理国标平台侧发过来的语音广播数据。
|
4月前
|
存储 监控 Java
Android Service之设备存储空间监控 DeviceStorageMonitorService
Android Service之设备存储空间监控 DeviceStorageMonitorService
89 2
|
4月前
|
Android开发 数据库管理
Android如何在Activity和Service之间传递数据
Android如何在Activity和Service之间传递数据
184 3