【问题标题】:bind to remote service(AIDL) form handler class android绑定到远程服务(AIDL)表单处理程序类android
【发布时间】:2016-01-24 18:11:34
【问题描述】:

我有一个监听 UDP 套接字的远程服务。所有的 UDP 发送/接收都是通过服务进行的。此服务在启动时启动并持续到用户卸载该服务。多个应用程序(客户端应用程序)可以联系此服务,以便通过 UDP 套接字发送数据。

当消息接收到远程服务时,它会广播消息。客户端应用程序可以通过广播接收器捕获这些广播消息。为了处理捕获的消息,客户端应用程序有一个处理程序类(纯 java 类)。此处理程序类需要绑定到远程服务才能将消息发送回(到服务)。

所有这些通信都发生在后台(不与 UI 交互)

那么我如何将处理程序类与远程服务绑定。我可以使用普通 java 类的服务连接吗?

【问题讨论】:

  • Handler 在 Android 世界中具有特定的含义。您在这里并不是真的指 Android Handler,所以也许您应该选择另一个词。它可能会减少混乱。

标签: android android-service aidl android-service-binding


【解决方案1】:

您可以从 POJO(普通旧 Java 对象)绑定到 Service。您需要访问Context 才能让您的 POJO 致电bindService()。您可以让客户端应用程序将 Context 作为参数传递给 POJO 的构造函数,或者作为 POJO 的其他方法的参数。

您的 POJO 需要在对 bindService() 的调用中提供 ServiceConnection。当Service 连接和断开连接时,此ServiceConnection 对象将获得回调。您的 POJO 将需要跟踪它是否与 Service 建立了活动连接,以便在需要时可以绑定到 Service

请注意,对bindService() 的调用是异步的。这意味着您需要等待回调ServiceConnection.onServiceConnected() 才能真正调用绑定Service 上的方法。对onServiceConnected() 的调用在主(UI)线程上执行。这可能会对您的应用程序架构产生一些影响。

【讨论】:

    猜你喜欢
    • 2022-12-29
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    相关资源
    最近更新 更多