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);
}
}在我的申请恢复时,我是否可以调用它?
在此之前,非常感谢您。
发布于 2017-05-17 10:21:50
您可以使用Android BroadcastReceiver。
广播接收器( receiver )是一个Android组件,允许您注册系统或应用程序事件。一旦发生此事件,所有已注册的事件接收器都会由Android运行时通知。 例如,应用程序可以注册ACTION_BOOT_COMPLETED系统事件,该事件在Android系统完成启动过程后触发。
要实现,请阅读本教程:http://www.vogella.com/tutorials/AndroidBroadcastReceiver/article.html
https://stackoverflow.com/questions/43982833
复制相似问题