我计划通过 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/