我正在Android中开发一个聊天应用程序,该应用程序在所有版本的Android中运行(从2.3.5开始到最新的kitkat),在聊天方面,每件事情都运行良好,但我面临一个大问题。 / p>
问题是当我生成apk并在Android手机中安装apk时(使用软件包安装程序),用户会在一段时间内离线(例如在XYZ分钟内)。在S3中它是40分钟而在S5中它是30分钟分钟和htc欲望hd是20分钟,之后用户断开连接。
但是当我使用Eclipse安装相同的应用程序到Android手机时,用户在线(因为我每隔5秒检查一次XMPP连接的状态,并且如果连接1天后仍然断开与ejabberd服务器的连接这是预期的)
当我从Android项目生成apk时,我是否做错了什么让我非常困惑。但不是我所知。
如果有人能够解决这个阻碍问题,我会非常感激。
我正在使用asmack库,版本是asmack-android-8-4.0.4
老实说,我没有发现ejabbered服务器和ejabberd服务器有任何问题。
任何有关解决问题的指示都将不胜感激。如果您需要任何其他信息,请与我们联系。
总结一下给我提出问题的安装模式。
我们正在使用的库版本是asmack-android-8-4.0.4.jar
Debug Apk(从Eclipse安装的应用程序)没有任何问题,而Release Apk(不使用ProGurard导出的应用程序)重新连接问题。
用户在一段时间内离线,永远无法重新上线。
我们正在Wifi连接上对此进行测试,我们完全同意当设备由于长时间不活动而进入睡眠模式时会发生这种情况。但是,在唤醒设备(我们认为发送CONNECTIVITY_CHANGE系统操作)之后,由于某些原因后续尝试重新连接失败在发布APK
我们的连接机制就像这样
Android Service具有独立的工作线程,它负责维护持久连接。 PingManager已注册PingFailedListener,并且在适当的ping间隔下完全正确。在OnPIngFailed中,我们断开连接XmppConnection.disconnect,然后重新连接。这种机制在Debug APK
中没有任何问题注意:安全模式已禁用,==> SecurityMode.disabled我们已阅读此README指南。 https://github.com/Flowdalic/asmack/blob/master/README.asmack
我们没有使用ProGuard,
project.properties没有指向任何" proguard-android-optimize.txt"和" proguard-project.txt"将所有内容都注释掉,为了更加安全,我们添加了keep class,以便重要的Smack类不会被优化掉。我附上了project.properties以供参考。我附上了proguard-project.txt作为参考。