【发布时间】:2016-02-26 14:01:18
【问题描述】:
我一直在为 chat 应用程序使用 Smack XMPP android 库。
我目前的聊天架构是,我使用 XMPP 来发送 messages 到客户端只有当应用程序在 Foreground 否则使用 GCM。服务器已经处理好了。
由于 android 没有方法来简单地指示应用程序当前在 FG 或 BG 中的位置,我发现很难连接和断开 XMPP 。因此,当应用程序有多个活动时,我在每个活动 onPause 和 onResume 上实现了使用计时器。这是非常痛苦的,还有很多工作要做。
例如,我有两个活动,A 和 B。在 A 的 onResume() 中连接 XMPP。从 切换A 到 B,onPause() 将在 A 上触发并在 3sec.Within 3sec 后断开 XMPP 连接,onResume B 的 () 将触发并停止计时器,以便连接处于活动状态。 :-)
onPause()
if (Application.getInstance().xmppStatus == XMPPSTATUS.CONNECTED) {
Application.getInstance().disconnectXmpp(); //disconnect xmpp after 3sec
}
onResume()
if (Application.getInstance().xmppStatus == XMPPSTATUS.DISCONNECTED) {
LoginHelper.connectXmpp();//connect XMPP
}
我相信你们中的大多数人都陷入了这种问题,尤其是在聊天中,所以我很高兴听到你在这方面的经验。
【问题讨论】:
标签: android service connection xmpp smack