我在我的应用程序中面临一个新问题,我有三种不同的Android服务。
我面临的问题是如何同步这三种服务的绑定链。当我绑定到TaskService时,它又绑定到ConnectionService,而ConnectionService又绑定到LibService。几乎总是第一个服务连接,即TaskService和ConnectionService之间的连接,在ConnectionService和LibService之间的连接之前解析。因此,当我在TaskService中使用ConnectionService绑定器时,我得到一个NullPointerException,因为ConnectionService还没有LibService绑定器。
我尝试使用锁来阻止ConnectionService在检索到LibService绑定程序之前返回绑定程序,但这会导致应用程序阻塞,因为在主线程上执行服务连接会阻止它解析第二个服务连接。
哪种方法可以解决问题? 感谢
答案 0 :(得分:1)
这种架构在Android中有点困难。我的建议是,在成功建立自己的绑定和其他资源之后,每个Service
都会向其绑定的客户端发送一条额外的“就绪”通知消息。您可以通过使用Intent
中的广播Service
返回其客户端来实现此目的,或者您可以使用双向(回调)通信,具体取决于您之间已实现的通信方法你的Service
和他们的客户。
应在客户端绑定后发送“就绪通知”,直到客户端收到需要“等待”的“就绪通知”(这可以通过显示进度通知或进度对话框或“初始化...”来完成。 “对话框或动画或任何让用户占用的东西。