我是不是必须为 smack xmpp 连接创建两个单独的类,一个用于后台侦听器,另一个用于前台侦听器?

Posted

技术标签:

【中文标题】我是不是必须为 smack xmpp 连接创建两个单独的类,一个用于后台侦听器,另一个用于前台侦听器?【英文标题】:Do I have to create two separate classes for smack xmpp connection, one for background listener and another for foreground listener?我是否必须为 smack xmpp 连接创建两个单独的类,一个用于后台侦听器,另一个用于前台侦听器? 【发布时间】:2016-10-09 08:29:44 【问题描述】:

我是 Java 和 android 的初学者。我正在使用 xmpp smack 库创建一个 Android 聊天应用程序。我的要求是我希望我的 xmpp 连接能够收听收到的消息,即使我的应用程序在后台。我知道对于后台进程,我必须创建一个服务。但我希望我的应用程序保持连接,即使我的应用程序在后台并且也在前台。所以我的问题是我是否创建了两类 xmpp,一类用于后台进程,另一类用于前台(当用户在线时)

【问题讨论】:

【参考方案1】:

只需创建一个简单的服务并使其在后台线程上运行,该线程将接收您的消息,然后您可以从那里将您的消息传递给主线程(使用处理程序或广播接收器)并在主线程上执行您想要的操作或对收到的数据执行后台操作。希望这是您的要求。

【讨论】:

感谢 Nitesh,但我在其他活动中需要 xmpp 连接对象,所以我如何将连接对象从绑定服务传递到活动 我对 xmpp 不太熟悉,但您可以使用处理程序将类的对象传递给另一个线程。

以上是关于我是不是必须为 smack xmpp 连接创建两个单独的类,一个用于后台侦听器,另一个用于前台侦听器?的主要内容,如果未能解决你的问题,请参考以下文章

Android基于XMPP Smack Openfire下学习开发IM连接断开重连

XMPP 注销(Smack API),无需断开与服务器的连接

XMPP Smack 4.1.0 检查用户是不是已经注册

Smack XMPP 连接未通过 4G 网络连接

使用 Smack 的 QuickBlox 服务器端 XMPP 客户端

SmackInitialization:无法确定 Smack 版本