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