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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
7月前
|
存储 网络协议 物联网
Android集成MQTT教程:实现高效通信和实时消息传输
Android集成MQTT教程:实现高效通信和实时消息传输
594 0
|
8月前
|
物联网 Java Linux
Linux安装与配置Eclipse Paho库:实现MQTT通信
Eclipse Paho是一个开源的MQTT(Message Queuing Telemetry Transport)实现,提供了多种编程语言的客户端库,包括C、C++、Java、Python等。在Linux系统中,通过安装和配置Eclipse Paho库,我们可以方便地实现MQTT通信功能。本文将详细介绍在Linux系统中安装和配置Eclipse Paho库的步骤,以便于开发者在物联网项目中使用MQTT协议进行通信。
649 0
|
4月前
|
XML Java Android开发
Android Studio App开发之服务Service的讲解及实战(包括启动和停止,绑定与解绑,推送服务到前台实现音乐播放器,附源码)
Android Studio App开发之服务Service的讲解及实战(包括启动和停止,绑定与解绑,推送服务到前台实现音乐播放器,附源码)
98 0
|
2月前
|
数据可视化 Android开发
[Android 四大组件] --- Service
[Android 四大组件] --- Service
24 0
|
8月前
|
Android开发
Android PackageManagerService源码分析和APK安装原理详解
Android PackageManagerService源码分析和APK安装原理详解
200 1
|
5月前
|
物联网 Python
如何通过示例在Python中使用Paho MQTT客户端?
如何通过示例在Python中使用Paho MQTT客户端?
76 2
如何通过示例在Python中使用Paho MQTT客户端?
|
6月前
|
消息中间件 中间件 Kafka
RocketMQ源码(一)RocketMQ消息生产及消费通信链路源码分析
**RocketMQ**的核心架构主要分为Broker、Producer、Consumer,通过阅读源码看到他们之间是通过Netty来通信的 ,具体来说Broker端是**Netty服务器**用来负责与客户端的连接请求处理,而Producer/Consumer端是**Netty客户端**用来负责与Netty服务器的通信及请求响应处理。
157 1
|
7月前
|
消息中间件 存储 负载均衡
RocketMQ 源码分析——NameServer
- 编写优雅、高效的代码。RocketMQ作为阿里双十一交易核心链路产品,支撑千万级并发、万亿级数据洪峰。读源码可以积累编写高效、优雅代码的经验。 - 提升微观的架构设计能力,重点在思维和理念。Apache RocketMQ作为Apache顶级项目,它的架构设计是值得大家借鉴的。 - 解决工作中、学习中的各种疑难杂症。在使用RocketMQ过程中遇到消费卡死、卡顿等问题可以通过阅读源码的方式找到问题并给予解决。 - 在BATJ一线互联网公司面试中展现优秀的自己。大厂面试中,尤其是阿里系的公司,你有RocketMQ源码体系化知识,必定是一个很大的加分项。
125 0
|
7月前
|
消息中间件 存储 Kafka
RocketMQ 源码分析——Broker
1. Broker启动流程分析 2. 消息存储设计 3. 消息写入流程 4. 亮点分析:NRS与NRC的功能号设计 5. 亮点分析:同步双写数倍性能提升的CompletableFuture 6. 亮点分析:Commitlog写入时使用可重入锁还是自旋锁? 7. 亮点分析:零拷贝技术之MMAP提升文件读写性能 8. 亮点分析:堆外内存机制
112 0
|
8月前
|
Android开发
Android手写占位式插件化框架之Activity通信、Service通信和BroadcastReceiver通信(一)
Android手写占位式插件化框架之Activity通信、Service通信和BroadcastReceiver通信
68 0