Android进程间通信BroadcastReceiver、AIDL
Posted
技术标签:
【中文标题】Android进程间通信BroadcastReceiver、AIDL【英文标题】:Android inter process communication BroadcastReceiver, AIDL 【发布时间】:2016-05-23 09:02:43 【问题描述】:我正在开发一个应用程序,它应该可以从其他应用程序(服务器)接收一些对象。 作为客户端应用程序的开发人员,应该尽可能简单地实现将对象发送到我的服务器应用程序所需的东西。
我已经阅读了很多关于 BroadcastReceivers、AIDL、Messenger 的文章。
在大多数网站上,建议使用 AIDL 或 Messenger(内部使用 AIDL)。但是为什么不使用广播接收器呢?它非常易于使用并且工作得很好。是耗尽电池还是缺乏性能?
我的应用程序应该使用哪种“技术”?广播接收器?爱迪尔?信使?内容提供商? Unix 管道?
有什么好的网站/书籍可以解释这种交流方式吗?
【问题讨论】:
基本上使用 AIDL,您可以更好地满足您的需求(因为构建工具会生成 java 代码,而您不应该关心底层实现)......当 BroadcastReceiver 只有一个接口时......跨度> 我只发送一个包含其他信息对象的对象。那么广播接收器会正常工作吗?有时我需要传输很多对象,广播接收器是否缺乏性能? 1.恕我直言,BroadcastReceiver 是建立在带有 IIntentSender.aidl/IIntentReceiver.aidl 2 的 RPC 之上的。AIDL 解决方案和 BroadcasrReceiver 之间的性能应该几乎没有差异(恕我直言,接收器的调用次数很少,但性能成本不高)... 3. 有时我需要传输很多对象那么您应该记住 Intent 的大小限制......也许“很多对象”的 ContentProvider 会更好 【参考方案1】:BroadcastReceivers 是一个相对较旧的概念,有时在没有正确权限的情况下会危及安全,通常您可能会要求增强服务以进行多次呼叫,因此 AIDL 将是一个更简单的选择
【讨论】:
以上是关于Android进程间通信BroadcastReceiver、AIDL的主要内容,如果未能解决你的问题,请参考以下文章