当前位置:  开发笔记 > 编程语言 > 正文

Android/Smack:在睡眠模式下保持XMPP连接处于活动状态

如何解决《Android/Smack:在睡眠模式下保持XMPP连接处于活动状态》经验,为你挑选了0个好方法。

我有一个Android应用程序,它有一个聊天客户端作为其功能之一.聊天客户端使用基于Android 的Smack库的XMPP,并在后台运行Openfire作为XMPP服务器.使用BOSH建立连接整个XMPP连接处理实现为一种服务,即使应用程序的活动不在前台,也可以在后台运行和监听传入消息.到目前为止,一切都很好.

唯一的问题似乎是睡眠模式.在模拟器中(设置为"保持唤醒"时)或使用手机时,XMPP连接正在保持,应用程序可以发送和接收消息.但是,一旦手机进入睡眠模式,XMPP连接就会中断 - 我可以在Openfire服务器的管理控制台中看到用户离线.直观地说,我想一直接收消息,例如WhatsApp.

当然,我在网上搜索过Stackoverflow,但我无法得到明确的答案.用例通常似乎是必须定期执行任务,例如每小时一次.但在聊天客户端的情况下,这似乎并不强烈.因为我认为这是一个常见的用例 - 毕竟,有很多聊天应用程序或带有聊天功能的应用程序 - 这些是我的问题:

如何在手机休眠时更改/扩展我可以收到聊天消息的应用程序?

我偶然发现了WakeLock.这是要走的路还是这些不适合我的用例?

自从Lollipop以来,还有JobScheduler自己使用的API WakeLock.好点?

例如,WhatsApp如何处理这种情况?

另请注意:我使用模拟器进行调试时出现睡眠模式问题.当我在模拟器中关闭"保持唤醒"时,屏幕在1+分钟后变黑并且XMPP连接中断.但我不知道如何在模拟器变黑后重新唤醒/切换模拟器.Android Studio实际上告诉我,设备或其他东西已经消失,我必须重新启动模拟器.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有