Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android MQTT客户端应用程序在应用程序暂停然后恢复时未接收发布_Java_Android_Service_Client_Mqtt - Fatal编程技术网

Java Android MQTT客户端应用程序在应用程序暂停然后恢复时未接收发布

Java Android MQTT客户端应用程序在应用程序暂停然后恢复时未接收发布,java,android,service,client,mqtt,Java,Android,Service,Client,Mqtt,MQTT Paho客户端v3.3.1 MQTT Android服务v1.1.0 当应用程序具有焦点时,将收到所有出版物。当应用程序失去焦点或移动设备变为空闲时,MQTT Android服务仍会接收发布,但它们存储在本地数据库中 我希望在应用程序恢复时将这些存储的消息传递给应用程序,但事实并非如此。我可以发布新消息并接收它们,但存储的消息仍保留在本地数据库-DatabaseMessageStore.java类中。让它们通过Android服务发送的唯一方法是 断开连接,然后重新连接 我在服务代码类M

MQTT Paho客户端v3.3.1

MQTT Android服务v1.1.0

当应用程序具有焦点时,将收到所有出版物。当应用程序失去焦点或移动设备变为空闲时,MQTT Android服务仍会接收发布,但它们存储在本地数据库中

我希望在应用程序恢复时将这些存储的消息传递给应用程序,但事实并非如此。我可以发布新消息并接收它们,但存储的消息仍保留在本地数据库-DatabaseMessageStore.java类中。让它们通过Android服务发送的唯一方法是 断开连接,然后重新连接

我在服务代码类MqttConnection.java中找到了传递存储发布的代码

private void deliverBacklog() {
    Iterator<StoredMessage> backlog = service.messageStore
            .getAllArrivedMessages(clientHandle);
    while (backlog.hasNext()) {
        StoredMessage msgArrived = backlog.next();
        Bundle resultBundle = messageToBundle(msgArrived.getMessageId(),
                msgArrived.getTopic(), msgArrived.getMessage());
        resultBundle.putString(MqttServiceConstants.CALLBACK_ACTION,
                MqttServiceConstants.MESSAGE_ARRIVED_ACTION);
        service.callbackToActivity(clientHandle, Status.OK, resultBundle);
    }
}
private void deliverybacklog(){
迭代器backlog=service.messageStore
.GetAllarivedMessages(clientHandle);
while(backlog.hasNext()){
StoredMessage msgArrived=backlog.next();
Bundle resultBundle=messageToBundle(msgArrived.getMessageId(),
msgArrived.getTopic(),msgArrived.getMessage();
resultBundle.putString(MqttServiceConstants.CALLBACK\u操作,
MqttServiceConstants.MESSAGE\u-ARRIVED\u-ACTION);
service.callbackToActivity(clientHandle,Status.OK,resultBundle);
}
}
当我的申请恢复时,我是否可以调用此选项


非常感谢。您可以使用Android BroadcastReceiver

广播接收器(receiver)是一个Android组件,它允许 您需要注册系统或应用程序事件。全部注册 一旦此事件发生,Android运行时将通知事件的接收者 事情发生了

例如,应用程序可以注册操作_BOOT _COMPLETED 系统事件,一旦安卓系统完成操作,将触发该事件 启动过程

有关实施,请阅读本教程: