我正在使用 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)
任何指导将不胜感激。