java - 在android中实现Socket.io的最佳方式

标签 java android sockets socket.io android-lifecycle

我计划通过 this 在 android 中实现 Socket.io用于基于聊天的应用程序的库。据我了解,图书馆似乎相当不错。我想知道如何在整个应用程序中始终保持单个套接字连接?在这里我列出了实现的方法,其中我需要最好和稳定的方法。

三种方式

MainApplication 类扩展Application

通过这个我们有一个很好的范围,即套接字连接在主线程(或应用程序的生命周期)中维护,并且每当需要从 Activity 中获取套接字实例时,我们都可以轻松获得它。但它的主线程也是问题所在。它可能会阻塞主线程。

绑定(bind)服务

通过这种方式,我们可以将服务与 Activity 绑定(bind),我们可以简单地使用它。在单独的线程中执行是实现 IO/Network 调用的方式。但是跨进程传输比同进程直接访问成本更高。

单例

在 Singleton 中维护连接也很有意义。但是我们不知道实例何时被进程杀死,因为它在 Activity 生命周期中不起作用。

如果我说得通,请帮助我。如果不注释掉。

编辑

我已经给出了更适合我的答案。

最佳答案

首先,应用程序的 onCreate()与您的用例无关,因为当线程首次在非服务代码中启动时,您不能在后台运行线程。

另外,我建议使用 Google Cloud Messaging而不是创建自己的机制。这对设备的电池生命周期和更少的代码供您处理是最好的。

如果您确实想完全自己实现聊天,Service是您唯一的选择。您也可以将它与单例结合使用,但我不推荐这种方法。您可以使用广播和BroadcastReceiver用于您的 Service 之间的通信和 Activity ,我认为它比绑定(bind)服务更容易,因为绑定(bind)到服务是异步的,与简单的广播相比,它会造成很多困惑。

关于java - 在android中实现Socket.io的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32102332/

相关文章:

java - 在 JSTL 中捕获除零

java - Eclipse 不断从源文件夹中删除 src/it

Java 8 Lambda 函数抛出异常?

android - 黑色启动器图标 Android

android - managedQuery 没有关闭游标 onDestroy?

java - 无法通过socket android连接到服务器

c - 客户端断开连接后是否可以从客户端套接字读取数据?

java - 多键映射实现

java - Robospice-改造测试

javascript - socket.io 无法与 Node 服务器一起使用