3

我正在使用 paho android 服务客户端从使用 Mqtt 的服务器接收消息。该应用程序在活动运行时可以正常发送和接收,但是在应用程序未运行时发布的任何消息都不会被接收,并且我的回调类将不会运行。

我相信这可能是上下文的问题,并且我的回调与我的活动上下文相关联,或者我需要以某种方式唤醒我的应用程序,以便它将消息写入数据库然后再次休眠。

这是我的 MqttCallback 实现:

public class Callback implements MqttCallback{

private Context context;
private static final String TAG = "MQTT";

public Callback(Context context) {
    this.context = context;
}

@Override
public void connectionLost(Throwable arg0) {
    MQTTClient.reconnect(); 
}

@Override
public void deliveryComplete(IMqttDeliveryToken arg0) {
}

@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
    Log.i(TAG,"mesage arrived");
    //update database and store message
}

这是我的客户实例:

    client = newMqttAndroidClient(context,Constants.ADDRESS+Constants.PORT,
    MqttAsyncClient.generateClientId());
    client.setCallback(new Callback(context));

发送给两者的上下文是我的 MainActivity (this)

任何指导将不胜感激。

4

0 回答 0