我在我的Android应用程序中使用aSmack来接收来自桌面Jabber客户端的消息。这很好运行,即使我的Android手机离线(在连接正确关闭后),它也会在下次登录后接收离线消息。
但是,当我在手机上进入飞行模式或关闭手机以使连接突然关闭(没有在Connection对象上调用disconnect()),手机在我的桌面Jabber客户端的联系人列表中保持“在线”一段时间,我可以向其发送消息。但是这些消息永远不会到达。即使手机再次登录服务器。这些消息丢失了。
有人知道如何解决此问题吗?在聊天中丢失消息不是选项。:)
编辑:添加测试代码 BroadcastReceiver:http://pastebin.com/cFLzGXgy 服务:http://pastebin.com/wLpQCQfT 第一个是BroadcastReceiver,每次手机连接到网络时启动服务(第二个URL)。
但是,当我在手机上进入飞行模式或关闭手机以使连接突然关闭(没有在Connection对象上调用disconnect()),手机在我的桌面Jabber客户端的联系人列表中保持“在线”一段时间,我可以向其发送消息。但是这些消息永远不会到达。即使手机再次登录服务器。这些消息丢失了。
有人知道如何解决此问题吗?在聊天中丢失消息不是选项。:)
编辑:添加测试代码 BroadcastReceiver:http://pastebin.com/cFLzGXgy 服务:http://pastebin.com/wLpQCQfT 第一个是BroadcastReceiver,每次手机连接到网络时启动服务(第二个URL)。
PS:这只是一个测试代码!如果你想使用/测试它,你必须更改服务器/用户名/密码。