首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android MQTT客户端应用程序暂停时未接收发布,然后继续运行

Android MQTT客户端应用程序暂停时未接收发布,然后继续运行
EN

Stack Overflow用户
提问于 2017-05-15 15:04:12
回答 1查看 203关注 0票数 0

MQTT Paho客户端v3.3.1

MQTT Android服务v1.1.0

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

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

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

代码语言:javascript
复制
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);
    }
}

在我的申请恢复时,我是否可以调用它?

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

发布于 2017-05-17 10:21:50

您可以使用Android BroadcastReceiver。

广播接收器( receiver )是一个Android组件,允许您注册系统或应用程序事件。一旦发生此事件,所有已注册的事件接收器都会由Android运行时通知。 例如,应用程序可以注册ACTION_BOOT_COMPLETED系统事件,该事件在Android系统完成启动过程后触发。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43982833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档