2017-03-27 41 views
0

我目前是一名初级开发者。我听说过IPC,现在我正在学习Android AIDL。AIDL vs JAR/AAR

我制作了.aidl文件,我在服务中实现了.aidl中的方法,并且在另一个应用程序中使用了这些方法,但我没有看到这一点。

为什么我不能只使用.aar.jar包含该服务的文件,而不使用AIDL?当我应该使用AIDL并且当我应该导入.jar文件时。更一般的说,当我们可以使用.jar文件时,使用IPC有什么意义?

+1

IPC意味着InterProcessCommunication,所以当你想要在两个不同的应用程序之间传递一些数据时,或者如果双方都在同一个应用程序中,但是由不同的进程托管,你正在使用'AIDL' – pskink

回答

3

为什么我不能只使用包含该服务的.aar或.jar文件,而不使用AIDL?

从技术文档https://developer.android.com/guide/components/aidl.html

使用AIDL是必要的前提是你让来自不同应用的客户端访问服务以供IPC和要处理你的多线程服务。

当您将Service打包到aar或jar中时,此服务可以在任何地方运行,即在应用程序的相同或不同进程中运行。 AIDL专门为IPC设计,即服务和应用程序在不同的进程中。

更一般的,当我们可以使用.jar文件时使用IPC有什么意义?

IPC是操作系统提供的数据共享机制,jar是字节码分配的手段。他们是不同的东西。

假设您想要使用某人提供的服务,并且您没有它的源代码或字节代码。您只能在运行时访问此服务,由供应商管理,不同于您自己的服务。在这种情况下,您需要提供商指定的AIDL才能与服务进行通信。

+0

谢谢!这是非常丰富的:)。顺便说一句,在评论的最后一部分中,您说“您只能在运行时访问此服务,并且在提供程序管理的进程中”。你能推荐我一些关于这个东西的文章吗? –

+0

@MateutAlin我不知道是否有任何关于它的文章:(这只是一个具体的案例我汇编。我链接和服务指南的文档应涵盖该主题:https://developer.android.com/guide/components /services.html – nandsito

+0

好的,无论如何谢谢你的答案。 –