绑定到远程服务(AIDL)表单处理程序类android

时间:2016-01-24 18:11:35

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

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

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

所有这些通信都在后台进行(没有与UI交互)

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

1 个答案:

答案 0 :(得分:0)

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

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

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