AIDL使用示例

问题描述 投票:44回答:5

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

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

  1. 是用于与手机外部通信。
  2. 或与不同的应用程序通信,(为什么我们需要与其他应用程序通信)
  3. 他们在docs中说什么样的服务
android aidl
5个回答
41
投票

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

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

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


18
投票

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

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

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

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

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

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


3
投票

另一个现实世界的例子是Google Play许可证正在使用AIDL。


0
投票

1 - 用于与手机外部通信。它与应用程序外部通信。

2 - 或与不同的应用程序通信,(为什么我们需要与其他应用程序通信)正如@GodOnScooter所提到的,当您的应用程序与电话服务进行通信时,实际上是另一部分。

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

这是一个在系统的不同进程中运行的服务。要绑定到此服务,您需要IPC(进程间通信),AIDL用于实现此功能。


0
投票

您可以使用AIDL在apps / Process之间进行通信

示例:假设您有三个应用程序APP_A,APP_B和APP_C,现在假设有一些功能对所有三个应用程序都是通用的,所以不是在所有应用程序中编写相同的代码,您可以创建一个单独的APP_AIDL(查找服务)运行在背景中。

© www.soinside.com 2019 - 2024. All rights reserved.