use*_*846 9 multithreading android aidl
要求:需要将服务/合同从其他流程公开给其他应用程序.例如:getPhoneRecord(recordId),deletePhoneRecord(phoneId)等
潜在的解决方案:Messenger或AIDL
根据我的分析,我认为AIDL是唯一的选择,因为Messenger提供了一种非常通用的跨应用程序发送消息的方式.Messenger仅限于在客户端发送(Message)和在服务器上发送handleMessage(Message msg).还存在其他差异,例如多线程.但是,我关心的是从其他应用程序/消费者可以调用的服务定义API契约.我的理解是否正确?
use*_*846 12
每个Android文档:
大多数应用程序不应使用AIDL来创建绑定服务,因为它可能需要多线程功能,并且可能导致更复杂的实现.
我只是想确保我确信AIDL是我最好的朋友.所以,我想出了在Android中实现后台服务的以下摘要:
从广义上讲,Android中的服务可以启动或绑定
已启动服务 假定已启动的服务执行单个操作但未将结果返回给调用方,因此无法满足我的特定要求(将服务/合同从其他进程暴露给其他应用程序.例如:getPhoneRecord(recordId) ),deletePhoneRecord(phoneId)等)
绑定服务 有三种不同的口味
如果有人能够权衡我的决定,我们将不胜感激.
是的,你的理解是正确的。无论哪种情况,您都必须明确定义您的 API。如果使用 Messenger,它只是异步的自定义消息,因此如果您需要服务将数据发回,您还需要在客户端使用某种类型的类似机制。使用 AIDL 和 binders 更符合您描述的您想要做的事情。
归档时间: |
|
查看次数: |
4957 次 |
最近记录: |