MQTT Paho之Android service源码分析

569 阅读1分钟

官网:

www.eclipse.org/paho/client…

git.eclipse.org/c/paho/org.…\

www.eclipse.org/paho/client…\

libs下载链接:

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

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

repo.eclipse.org/content/rep…\

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

repo.eclipse.org/content/rep…\

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

从官网git.eclipse.org/c/paho/org.…可以获取到源码包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);