情况:
我有一个Android 系统应用程序(持久性),Service
应该一直运行。 (我们称之为服务A)
然后还有另一个应用程序(不是系统应用程序;普通应用程序)也有Service
。但是这个Service
可能会运行或者可能不会运行,因为Android OS会在需要资源时将其终止。 (我们称之为服务B)
简而言之:我们有两个应用程序(因此可以使用2个APK),可以使用相同的证书进行签名。 (所以他们可以在同一个过程中运行吗?)
我尝试完成的任务
服务A监听事件。当它收到一个事件时,我希望服务A调用正常的应用程序(服务B),它应该给服务A一个回复。
允许两项服务沟通的方法
我可以让他们使用:
进行交流问题
谢谢!
答案 0 :(得分:2)
对于所描述的案例,哪种沟通方式是“最好的”?
你只引用两个选项,因为“Aidl”和“Binding”是相同的。您使用AIDL来描述和实现客户端代理和服务器端存根以进行跨进程服务绑定。
鉴于您需要调用和响应,绑定可能是更好的选择。但请注意,除了使用Parcelable
,Serializable
或将对象图转换为JSON之外,没有IPC方法能够很好地支持“复杂对象”。
当服务A想要将消息委托/发送到服务B并且服务B没有运行时会发生什么?
当您致电startService()
或bindService()
时,Android会为App B分配流程并创建服务实例(调用其onCreate()
)方法。此时,行为与进程和服务已经运行的行为相同。
答案 1 :(得分:0)
如果包含服务A的应用程序是系统应用程序,那么如何使用相同的证书对这两个应用程序进行签名?
您是否可以访问平台证书?
无论如何,helpl将是一个不错的选择,因为您需要来自服务B的回复。