官網:
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。
從官網
可以擷取到源碼包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);