我有一个带AIDL接口的远程服务,被多个客户端应用程序使用。我想为需要一定时间的调用添加异步方法,但需要保证解决方案是安全的,意味着只有我的应用程序可以与服务通信。客户端应用程序签名与服务应用程序相同。目前,这些应用程序只是绑定到服务并调用单个接口方法执行各种操作。
一种选择是在操作完成时从服务中广播Intent,并在客户端应用程序中使用BroadcastReceiver,但问题#1是,这能否以确保只有我的应用程序可以接收Intent的方式完成? setPackage()似乎可以做到这一点,但我需要支持Gingerbread设备,根据此答案,该方法不可行:setPackage for intent in gingerbread
因此,我需要添加第二个.aidl接口,用于服务使用的回调接口,由客户端实现。我见过在此处使用监听器的示例,但我不确定与客户端仅将第二个接口对象作为参数传递有何区别(如来自此答案的IScript / IScriptResult示例:Service call backs to activity in android)
问题#2,在这里使用监听器与回调方法相比有什么好处?