【问题标题】:Android MQTT client app not receiving publications when app paused then resumed应用暂停然后恢复时,Android MQTT 客户端应用未收到发布
【发布时间】: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


    【解决方案1】:

    您可以使用 Android 广播接收器。

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

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

    对于实施,请阅读本教程: http://www.vogella.com/tutorials/AndroidBroadcastReceiver/article.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2019-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多