Java 如何在EclipsePAHO';什么是MQTT?
我正在开发一个FOSS推送通知系统,并决定使用MQTT作为一种低带宽网络协议,比UDP等替代协议更可靠。因此,我偶然发现了Eclipse的Paho MQTT(-SN)/IoT库,它有一个。在实现了相当多的核心项目功能(您可以自己为Android Studio下载)之后,我遇到了实现Android客户端断开连接功能的问题。以下是错误: Stacktrace:Java 如何在EclipsePAHO';什么是MQTT?,java,android,android-studio,kotlin,Java,Android,Android Studio,Kotlin,我正在开发一个FOSS推送通知系统,并决定使用MQTT作为一种低带宽网络协议,比UDP等替代协议更可靠。因此,我偶然发现了Eclipse的Paho MQTT(-SN)/IoT库,它有一个。在实现了相当多的核心项目功能(您可以自己为Android Studio下载)之后,我遇到了实现Android客户端断开连接功能的问题。以下是错误: Stacktrace: E/AndroidRuntime: FATAL EXCEPTION: main Process: fish.push.api, PID: 9
E/AndroidRuntime: FATAL EXCEPTION: main
Process: fish.push.api, PID: 9040
java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter throwable
at fish.push.api.mqtt.ConnectionManager$1.connectionLost(Unknown Source:2)
at org.eclipse.paho.android.service.MqttAndroidClient.disconnected(MqttAndroidClient.java:1456)
at org.eclipse.paho.android.service.MqttAndroidClient.onReceive(MqttAndroidClient.java:1393)
at androidx.localbroadcastmanager.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:313)
at androidx.localbroadcastmanager.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:121)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
在我看来,这个错误并不是我自己的代码(我在ConnectionManager.kt
中的东西有一个神秘的未知源:2
,一些Timber.d(“…”)
日志语句表明断开连接回调正在成功执行到完成(即,D/ConnectionManager$disconnect:Disconnected
出现在错误/stacktrace/VM关闭前不久)。stacktrace中的下一行涉及Paho库中的以下代码片段:
MqttAndroidClient.java
private void disconnected(Bundle data) {
clientHandle = null; // avoid reuse!
IMqttToken token = removeMqttToken(data);
if (token != null) {
((MqttTokenAndroid) token).notifyComplete();
}
if (callback != null) {
callback.connectionLost(null);
}
}
哪个更像我所经历的NullPointerException
,因为回调。connectionLost(null)
应该接受一个非null的可丢弃原因
,但它们直接传入null
。怎么办