2011-12-21 80 views
35

了解Android中的AIDL,我想要一个真实生活的例子,意思是在什么情况下我们需要使用AIDL进行开发。AIDL使用示例

通过读取Android的文件...这使我困惑和这么多的问题,所以很难阅读整个文档对我来说,任何人都可以帮我

  1. 是它与外界通信电话。

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

  3. 它们在文档

回答

31

AIDL用于粘结剂说什么样的服务。 Binder是一种在Android服务上执行RPC调用的机制。

何时使用AIDL?何时需要服务。你什么时候需要服务?如果你想共享数据控制另一个应用程序的东西,你需要一个使用AIDL作为接口的服务。 (仅在共享数据时使用内容提供者)。

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

+0

好吧,现在我明白了,谢谢你,例如,假设我想控制android内置电话拨号程序,或者可能在我想跟踪手机上所有其他应用程序的情况下,我需要使用AIDL ...纠正我,如果我错了。 – 2011-12-22 00:32:51

+2

这取决于。一些信息(如联系人)可通过内容提供商获得。您可以将内容提供程序看作是应用程序之间为特定数据共享的持久性数据存储。 AIDL/services/binding用于通信。我的意思是,不仅要共享数据,还要与其他组件交互。 通过使用AIDL,可以实现电话控制。 – Jordi 2011-12-22 15:15:43

+0

好的,谢谢你,我知道了! – 2011-12-23 02:07:56

10

AIDL是Android接口定义语言。这基本上允许你进行IPC调用。

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

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

简而言之,AIDL是客户获得的“协议”,它告诉它如何与服务交谈。服务本身将拥有该协议的副本(因为它为客户发布)。那么服务将执行它如何处理的细节,一旦请求到达时,或者说当有人在谈论它

所以,进程A请求改变通过服务调用,服务得到请求,它会谈到电话的过程(因为它的一部分它)并改变对视频的呼叫。

重要的一点需要注意的是,AIDL仅适用于多线程环境。如果你不需要处理多线程拱,你可以不用绑定器。

3

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

0

1 - 是否与外部电话通信。 它与应用程序外部进行通信。

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

3 - 他们在文档中说的是什么样的服务 这是一个在系统的不同进程中运行的服务,要绑定到这个服务需要IPC(进程间通信),用AIDL来实现这个。