【问题标题】:How do different Services share one network connection?不同的服务如何共享一个网络连接?
【发布时间】:2014-06-04 00:08:42
【问题描述】:

我正在开发类似推送通知 SDK 的东西,当用户将 SDK 集成到他们的应用程序中时,SDK 会创建一个服务并通过 TCP 连接接收通知。

现在问题来了:假设很多应用程序会在某个android设备上使用SDK,所有的应用程序都需要接收自己的通知,如果我们在每个Service中创建TCP连接,将会消耗太多的资源和电池电量,所以我想使用一个主服务(可能是 SDK 启动的第一个服务)来建立 TCP 连接,其他服务通过某种 IPC 重用连接。但我不知道哪种技术最好使用。

有没有人可以给点建议?

谢谢~

【问题讨论】:

  • 一些开发人员已经对通过 Google 提供的流程发送消息感到不舒服,就像 GCM 一样。您的提议是让您的所有推送消息都处于由随机开发人员编写的随机应用程序的随机过程中。从安全的角度来看,许多人会认为这会更糟。
  • 谢谢。是否有某种方式可以跨服务进行通信并提供像 Lock 和 Semaphore 这样的同步机制?

标签: android service tcp push-notification ipc


【解决方案1】:

最后我这样解决了问题:

创建一个公共Service(android:export="true")来建立与服务器的TCP连接,当APP启动时,首先检查公共Service是否存在,如果没有,调用startService()。然后在APP中调用bindService()。要与公共服务通信,请使用 Messenger 类:

http://developer.android.com/guide/components/bound-services.html#Messenger

【讨论】:

    猜你喜欢
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多