AIDL使用示例

Nix*_*tel 47 android aidl

要了解AIDL在android中,我想要一个真实的例子,意味着我们需要使用的开发场景AIDL.

通过阅读Android Docs ...它让我感到困惑和许多问题,所以很难为我阅读整篇文档,任何人都可以帮助我

  1. 是用于与手机外部通信.

  2. 或与不同的应用程序通信,(为什么我们需要与其他应用程序通信)

  3. 他们在docs中说什么样的服务

Jor*_*rdi 43

AIDL用于Binder.Binder是一种在Android服务上进行RPC调用的机制.

何时使用AIDL?当您需要服务时.你什么时候需要服务?如果要在另一个应用程序中共享数据控制某些内容,则需要使用AIDL作为接口的服务.(仅在共享数据时使用Content Provider).

服务可以在您的应用程序中用作MVC模式中的模型卷.

  • 这取决于.一些信息(如联系人)可通过内容提供商获得.您可以将内容提供程序视为在特定数据的应用程序之间共享的持久数据存储.AIDL/services/binding用于通信.我的意思是,不仅要共享数据,还要与其他组件进行交互.通过使用AIDL,可以进行电话控制. (2认同)

小智 21

AIDL是Android界面定义语言.这基本上允许您进行IPC调用.

使用:有些情况下,一个进程需要与其他进程通信以获取某些信息.

示例:进程A需要呼叫状态信息以确定是否需要更改呼叫类型(例如,音频到视频呼叫,反之亦然).您可以从某些侦听器获得呼叫状态,但是要将呼叫类型从音频更改为视频,进程A需要更改挂钩.这种"挂钩"或改变呼叫的方式通常是电话类的一部分,电话类是电话处理的一部分.因此,为了从Telephony进程获得这样的信息,One可以编写电话服务(作为android电话进程的一部分运行),这将允许您查询或更改呼叫类型.由于此处的进程A(客户端)正在使用此远程服务Telephony进程通信以更改呼叫类型,因此它需要具有与服务进行通信的接口.由于Telephony服务是提供者,而进程A(客户端)是用户,因此他们都需要就他们能够理解和遵守的接口(协议)达成一致.这样的接口是AIDL,它允许您(通过远程服务)与Telephony进程通信并完成一些工作.

简单地说,AIDL是客户获得的"协议",它告诉它如何与服务对话.服务本身将拥有该协议的副本(因为它为其客户发布).然后,服务将实现一旦请求到达时如何处理的详细信息,或者说某人正在与之通话时的详细信息

因此,进程A请求通过服务更改呼叫,服务获取请求,它与电话进程通信(因为它是它的一部分)并更改对视频的调用.

需要注意的一点是,AIDL只是多线程环境所必需的.如果你不需要处理多线程拱,你可以取消Binders.