要了解AIDL
在 android 中,我想要一个现实生活中的例子,这意味着我们需要在什么开发场景中使用AIDL
。
通过阅读Android Docs ...它让我感到困惑和很多问题,所以很难为我阅读整个文档,任何人都可以帮助我
是为了和手机外的交流。
或与不同的应用程序通信,(为什么我们需要与其他应用程序通信)
他们在文档中谈论什么样的服务
AIDL 用于 Binder。Binder 是一种对 Android 服务进行 RPC 调用的机制。
何时使用 AIDL?当您需要服务时。您什么时候需要服务?如果你想在另一个应用程序中共享数据和控制某些东西,你需要一个使用 AIDL 作为接口的服务。(仅在共享数据时使用 Content Provider)。
服务可以在您的应用程序中用作 MVC 模式中的模型滚动。
AIDL 是 Android 接口定义语言。这基本上允许您进行 IPC 调用。
用途:在某些情况下,一个进程需要与另一个进程对话才能获得某些信息。
示例:进程 A需要呼叫状态信息来确定是否需要更改呼叫类型(例如音频到视频呼叫,反之亦然)。您可能会从某些听众那里获得呼叫状态,但是要将呼叫类型从音频更改为视频,进程 A需要一个挂钩来更改。这种“挂钩”或更改呼叫的方式通常是 Telephony Classes 的一部分,它是Telephony Process的一部分。因此,为了从 Telephony 进程中获取此类信息,可以编写一个电话服务(它作为 android 电话进程的一部分运行),它允许您查询或更改呼叫类型。由于这里的进程 A(客户端)正在使用这个远程服务,它与改变呼叫类型的电话进程,它需要有一个与服务对话的接口。由于电话服务是提供者,而流程 A(客户端)是用户,他们都需要就他们可以理解和遵守的接口(协议)达成一致。这样的接口是AIDL,它允许您(通过远程服务)与 Telephony 进程交谈并完成一些工作。
简单地说,AIDL 是客户获得的“协议”,它告诉它如何与服务交谈。服务本身将拥有该协议的副本(因为它是为其客户发布的)。然后,服务将实施有关请求到达后如何处理的详细信息,或者说何时有人与它交谈
因此,通过服务处理 A 请求更改呼叫,服务获取请求,它与电话进程对话(因为它是其中的一部分)并将呼叫更改为视频。
需要注意的重要一点是,AIDL 仅在多线程环境中是必需的。如果您不需要处理多线程拱门,则可以取消 Binder。
另一个现实世界的例子是 Google Play 许可证正在使用 AIDL。
我对 AIDL 的示例也有同样的想法,很难找到一个想法来制作一个使用 AIDL 的示例应用程序。然后我有一个想法,创建一个LocalLogServerApp
. 也许它不能成为一个生产应用程序,但它仍然显示出使用 AIDL 的一些价值
这个应用程序的主要功能是
这个应用程序的好处
Firebase Log
可能会帮助但从Firebase
多个设备接收日志。希望您发现这个想法有助于找到另一个更好的 AIDL 示例 https://github.com/PhanVanLinh/AndroidLocalLogServer https://github.com/PhanVanLinh/AndroidLocalLogClientTest
1 - 是否用于与手机外部通信。 它与应用程序外部通信。
2 - 或与不同的应用程序通信,(为什么我们需要与其他应用程序通信) 正如@GodOnScooter 提到的,当您的应用程序与实际上是另一部分的电话服务通信时。
3 - 他们在文档中谈论什么样的服务?
这是一个在系统的不同进程中运行的服务,要绑定到该服务,您需要 IPC(进程间通信),AIDL 用于实现这一点。