服务绑定链
Service binding chain
我的应用程序遇到了一个新问题,我有三个不同的 Android 服务。
- LibService:这是从我正在使用的库公开的服务,它连接到 BLE 传感器并允许 Android 设备从它们接收数据。
- ConnectionService:这是我在我的应用程序的库模块中创建的服务,它绑定到 LibService 并且在负责维护与 BLE 传感器的连接。
- TaskService:这个服务是在我的应用程序模块中创建的,负责使用从传感器接收到的数据计算不同的任务。该服务绑定到 ConnectionService 以接收数据。
我面临的问题是如何同步这三个服务的绑定链。当我绑定到 TaskService 时,这又绑定到 ConnectionService,后者又绑定到 LibService。几乎总是第一个服务连接,即 TaskService 和 ConnectionService 之间的连接,在 ConnectionService 和 LibService 之间的连接之前被解析。结果,当我在 TaskService 中使用 ConnectionService 绑定器时,我得到一个 NullPointerException,因为 ConnectionService 还没有 LibService 绑定器。
我尝试使用锁来阻止 ConnectionService 在检索到 LibService 活页夹之前 return 活页夹,但这会导致应用程序阻塞,因为服务连接是在主线程上执行的,从而阻止了它解析第二个服务连接。
解决问题的正确方法是什么?
谢谢
这种架构在Android中有点难度。我的建议是你有一个额外的 "ready" 通知消息,由每个 Service
发送给它的绑定客户端 在 它已经成功建立了自己的绑定并且其他资源。您可以通过使用从 Service
返回其客户端的广播 Intent
来执行此操作,或者您可以使用 2 向(回调)通信,具体取决于您已经在两者之间实现的通信方法你的 Service
(s) 和他们的客户。
"ready notification" 应在客户端绑定后发送,直到客户端收到它需要 "wait" 的 "ready notification"(这可以通过显示进度通知或进度对话框来完成或 "initializing..." 对话框或动画或任何让用户忙碌的东西。
我的应用程序遇到了一个新问题,我有三个不同的 Android 服务。
- LibService:这是从我正在使用的库公开的服务,它连接到 BLE 传感器并允许 Android 设备从它们接收数据。
- ConnectionService:这是我在我的应用程序的库模块中创建的服务,它绑定到 LibService 并且在负责维护与 BLE 传感器的连接。
- TaskService:这个服务是在我的应用程序模块中创建的,负责使用从传感器接收到的数据计算不同的任务。该服务绑定到 ConnectionService 以接收数据。
我面临的问题是如何同步这三个服务的绑定链。当我绑定到 TaskService 时,这又绑定到 ConnectionService,后者又绑定到 LibService。几乎总是第一个服务连接,即 TaskService 和 ConnectionService 之间的连接,在 ConnectionService 和 LibService 之间的连接之前被解析。结果,当我在 TaskService 中使用 ConnectionService 绑定器时,我得到一个 NullPointerException,因为 ConnectionService 还没有 LibService 绑定器。
我尝试使用锁来阻止 ConnectionService 在检索到 LibService 活页夹之前 return 活页夹,但这会导致应用程序阻塞,因为服务连接是在主线程上执行的,从而阻止了它解析第二个服务连接。
解决问题的正确方法是什么? 谢谢
这种架构在Android中有点难度。我的建议是你有一个额外的 "ready" 通知消息,由每个 Service
发送给它的绑定客户端 在 它已经成功建立了自己的绑定并且其他资源。您可以通过使用从 Service
返回其客户端的广播 Intent
来执行此操作,或者您可以使用 2 向(回调)通信,具体取决于您已经在两者之间实现的通信方法你的 Service
(s) 和他们的客户。
"ready notification" 应在客户端绑定后发送,直到客户端收到它需要 "wait" 的 "ready notification"(这可以通过显示进度通知或进度对话框来完成或 "initializing..." 对话框或动画或任何让用户忙碌的东西。