如何从单个服务提供多个AIDL接口?方案如下:
|---Client_1
|--AIDL1--| ...
| |---Client_6
MyService |
| |---Client_4
|--AIDL2--| ...
|---Client_9
我的想法是使用方法public IBinder onBind(Intent intent)
中的intent以某种方式找出调用的客户端应用程序的类型和此客户端所在的AIDL 感兴趣。这可能吗?
答案 0 :(得分:1)
我也有同样的问题,并编写原型进行测试。 实际上它应该通过检查意图并根据意图附加物返回不同的活页夹来起作用。
但经过测试,我发现onBind只为第一个客户端调用一次。 之后,系统会将缓存的绑定程序返回给以后想要绑定服务的客户端。
Android official document描述
多个客户端可以立即连接到该服务。但是,只有在第一个客户端绑定时,系统才会调用服务的onBind()方法来检索IBinder。然后,系统将相同的IBinder传递给任何其他绑定的客户端,而无需再次调用onBind()。
我仍然试图找到方法,但似乎无法做到这一点。