說到Android進程間通信,首先要說什麼是IPC。
一、什麼是IPC
IPC 即 Inter-Process Communication (進程間通信),是指進程間數據交互的過程。
Android底層是基於Linux,而Linux基於安全考慮,是不允許兩個進程間直接操作對方的數據,這就是進程隔離
在Linux系統中,虛擬內存機制爲每個進程分配了線性連續的內存空間,操作系統將這種虛擬內存空間映射到物理內存空間,每個進程有自己的虛擬內存空間,進而不能操作其他進程的內存空間,每個進程只能操作自己的虛擬內存空間,只有操作系統纔有權限操作物理內存空間.進程隔離保證了每個進程的內存安全,但是在大多數情形下,不同進程間的數據通訊是不可避免的,因此操作系統必須提供跨進程通信機制。
雖然Android是基於Linux,但並不能繼承Linux中的進程通信的方式,Android有着自己進程間通信方式。常用有如下幾種:
1、Bundle (四大組件間)
Bundle主要是在四大組件間進行數據傳輸的。
2、文件共享
Android進程通信之文件共享(序列化Serialzable與Parcelable中)
3、AIDL (基於Binder)
4、Messenger(基於Binder)
- 類似於Hnadler發消息用法
- Android進程間通信之Messenger的使用和理解
5、ContentProvider(基於Binder)
Android進程間通信之ContentProvider(內容提供者)
6、Socket(網絡)
Android進程間通信之Socket使用(TCP、UDP)
二、Android進程間通信幾種方式對比
下面引用Android開發藝術探索的總結:
參考Android開發藝術探索