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