【发布时间】:2023-03-17 17:50:01
【问题描述】:
MQTT Paho 客户端 v3.3.1
MQTT 安卓服务 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);
}
}
当我的应用程序恢复时,我是否可以调用它?
非常感谢。
【问题讨论】:
标签: java android service client mqtt