当前位置: 首页 > 面试题库 >

在Android中实现Socket.io的最佳方法

伯英武
2023-03-14
问题内容

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

三种方式

MainApplication 类扩展 应用程序

这样,我们就可以在 主线程
(或应用程序的生命周期)中维护套接字连接,并且只要活动需要套接字实例,我们就可以轻松获得套接字连接。但这也是主要问题。它可能会阻塞主线程。

绑定服务

通过这种方式,我们可以 服务与活动 绑定 ,并且我们可以简单地使用它。在单独的线程中执行操作是实现IO
/网络调用的方法。但是,跨进程传输比在同一进程中直接访问更昂贵。

辛格尔顿

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

如果我有道理,请帮助我。如果没有注释掉。

编辑

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


问题答案:

维持socket联系服务

根据Ofek Ron的说法,Service与相比BroadcaseReceiver更好的
主意BoundService。因为保持沟通很繁琐。而且,我还建议pub/sub使用广播方式,例如OttoEventBus(我本人建议由Square
提供的 Otto ,这是一种干净而出色的api)。

奥托的优点
1.简洁的API
2.您可以订阅和发布/任何ActivityFragmentService类。
3. 去耦 。(您必须在代码中尽量减少耦合)。

还有一点是 START_STICKY
onStartCommand()被破坏后用于启动服务。请参阅此参考。

MainApplication启动服务

最佳做法是在MainApplication扩展中启动服务Application。因为存在内存限制或用户从堆栈中强制关闭应用程序时,该应用程序将被终止。因此onStartCommand()不会像在Activity中实现那样频繁调用。

实施在线状态

您只需Application.LifeCycleCallbacksMainApplication类中实现即可实现在线状态,该类具有活动的大部分生命周期回调,并将在回调中得到通知。这样,您可以Online简单地实现状态,而无需任何样板代码。(如果有人需要帮助,请告诉我)。

上载或下载图像或文件。

最佳做法是实施by,IntentService因为它在单独的线程中运行。我保证它将提供最佳性能,因为它是由android本身处理的,而不像我们创建的线程一样。



 类似资料:
  • 问题内容: 假设我们有一个活动,该活动有很多视图要注册。 最常见的实现方法是让Activity-Subclass实现OnClickListener,如下所示: 我喜欢实现它的方式是在Activity-Subclass内部创建一个私有类,并让该内部类实现OnClickListener: 这样,代码看起来更加井井有条,易于维护。 此外,在谈论“ Is-a”,“ Has-a”关系时,后者似乎是一个好习惯

  • 问题内容: 我想使用socket.io将数据从服务器推送到浏览器,但是该项目是java tomcat之一,并且 Github中 有许多实现的服务器实现。他们中的大多数人都说 过时了, 或者有更好的版本可用。谁能建议我一个好的实现。 而且,我看到了许多有关使用广播的演示和示例代码。我的要求是将不同的消息推送到不同的客户端。有人可以指出一些有关此类内容的优秀演示或教程吗? 谢谢 问题答案: 作为作者,

  • 目标:在OpenCL中实现下面所示的图表。OpenCl内核需要做的主要工作是将系数数组和临时数组相乘,然后在最后将所有这些值累加为一。(这可能是时间最密集的操作,并行性在这里非常有用)。 我正在为执行乘法和加法的内核使用一个辅助函数(我希望这个函数也是并行的)。 图片描述: 每次一个值被传递到与系数数组大小相同的数组(临时数组)中。现在,每次一个值被传递到这个数组中,临时数组都会并行地与系数数组相

  • 我有一个相同错误的崩溃报告,就像这个问题中的一样:同一线程上的WebView方法错误 建议创建Runnable()。 我不明白为什么这能解决问题。该错误表示相同线程上的Webview方法,但答案建议在UI-Thread(主线程)上创建该方法。但是UI-Thread不是唯一的线程吗?有人能详细解释整个过程吗(考虑到我在构造函数的每个活动中创建了一个新的Webview)? 实现Javascript函数

  • 我正在使用socket.io和node.js/mongoDB的应用程序,它将在和之间发送实时分析 假设司机沿着一条路径移动,每次位置改变,他都会将自己的位置发送给特定家长的列表。 我可以想出一种实现这种功能的方法 1-我创建了两个数组 无论何时连接用户/驱动程序,我都会这样做 现在,如果驾驶员必须发出位置变化,他将执行以下操作: 我想知道这种方法是否更好?在MongoDB中将用户保存为online

  • 问题内容: 我正在尝试编写工厂模式以在程序中创建MainMode或TestMode。我以前用来创建这些对象的代码是: 我的游戏(游戏)将根据布尔值(isMode)创建MainMode对象或TestMode对象。如您所见,我正在向我的TestMode对象(randNo())添加一个额外的值。在TestMode中使用此值,以允许用户输入自己的“随机数”,而在MainMode构造函数中,则是随机生成的。