我有一个通过AIDL与其他服务进行通信的服务 . 我希望该服务受我的应用程序中的活动的约束 . 该服务可以定义两个 Binders \接口吗?我已经尝试过使用信使与活动进行通信,重写“onBind”方法,以便根据获取的意图返回不同的 Binders (一个用于其他服务,一个用于活动) .
但是当活动(使用相同的 Binders )从服务解除绑定时,我有一个错误"myService has leaked ServiceConnection ... that was originally bound here",我认为这是关于服务用于与其他服务进行通信的绑定 .
如果服务不能使用两个接口,我如何实现活动与该服务之间的通信?
谢谢你,-Liron
1 回答
AIDL和Messenger用于IPC与其他应用程序/进程 . 来自Android API Guide:
如果您的活动与服务处于同一过程中,则只需要扩展Binder .
有关绑定服务生命周期的此图形可能有助于您如何绑定/解除绑定(http://developer.android.com/guide/components/bound-services.html#Lifecycle):