Android应用暂停后,Android MQTT客户端应用无法接收发布,然后恢复

时间:2017-05-15 15:04:12

标签: java android service client mqtt

MQTT Paho Client 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);
    }
}

当我的申请恢复时,我是否可以打电话给你?

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

您可以使用Android BroadcastReceiver。

  

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

     

例如,应用程序可以注册ACTION_BOOT_COMPLETED   系统事件在Android系统完成后触发   启动过程。

要实现,请完成本教程: http://www.vogella.com/tutorials/AndroidBroadcastReceiver/article.html