我阅读了有关进程间通信(IPC)和从一个组件到另一个组件创建发送数据的信息
我所知道的是IPC定义了不同组件之间的通信通道
该通道将具有用于组件发送数据的编程接口。创建界面的方法如AIDL,Binder和Messenger
创建界面后,要通过它发送的数据必须 Parcel 。
所以总结步骤如下:
1.创建编程接口
2.将界面绑定到应用程序组件
3.将数据发送到该组件的组件必须将数据转换为Parcel。
但突然发现了所谓的 Intent ,可以将数据从一个组件发送到另一个组件,而不会产生这种开销
我需要解释Intent如何在不创建接口的情况下发送数据?
意图内部有一个接口吗?
intent和IPC,绑定服务和接口之间的关系是什么?
答案 0 :(得分:3)
1)IPC不会将数据从一个组件发送到另一个组件(它可以,但这是一种低效的方式)。 IPC将数据从一个进程发送到另一个进程。 Android应用程序通常是一个进程,虽然它不一定(开发人员有时将服务放入另一个进程)。这是一个重要区别的原因是进程不能共享内存,因此需要像IPC这样的特殊方法来发送它们之间的任何数据。
2)组件之间发送的数据不必是包裹。这是一种方式,也是Android在发送启动参数时使用的方式。但这没有必要。
3)只有当两者处于同一过程中时,才能使用Binder与服务进行通信。它是一种完全避免使用IPC的方法。
4)AIDL是IPC方法的包装器。 AIDL使用IPC,它只是试图让它看起来像是对客户端的正常函数调用。
5)Intent对象是在Android中启动服务或活动所需的所有数据的抽象。它将包括参数,这些参数可能包含在包裹中,也可能不包含在包裹中。它可能会也可能不会使用IPC来发送这些参数(如果目标Activitiy或服务在另一个APK中它将会。如果它不是,它可能不会。)
我认为这里的问题是你真的不了解流程是什么,Android组件是什么,以及流程如何实际沟通。我建议做一些研究。