當前位置:編程學習大全網 - 編程軟體 - Android ParcelFileDescriptor實現進程間通信

Android ParcelFileDescriptor實現進程間通信

壹個通信通道,實現跨進程的的Socket網絡通信。

具體的通信通道的圖如下。

android進程間通信是使用Binder來傳數據,而Binder傳輸的數據,有壹個最為基本的要求,就是要實現Parcelable接口。

ParcelFileDescriptor是android提供的壹個數據結構。

ParcelFileDescriptor是可以用於進程間Binder通信的FileDescriptor。支持stream 寫入和stream 讀出

我們可以使用

來將PacecelFileDescriptor 與File對應起來,以實現進程間的文件***享。

我們也可以使用

來建立壹個pipe通信通道,ParcelFileDescriptor數組第壹個元素是read端,第二個元素是write端,通過write端的AutoCloseOutputStream和read端的AutoCloseInputStream,我們就可以實現進程見的數據流傳輸了。

發送端:

1. 業務層調用getOutputStream向通信層發起請求

2. 通信層通過creatPipe 建立壹個ParcelFileDescriptor數組,並將write端的pipe[1]返回給業務層

3. 業務層得到pipe[1](ParcelFileDescriptor)後,可以通過AutoCloseOutputStream寫入數據

4. 從通信層的pipe[0]的AutoCloseInputStream中讀出數據通過socket發送出去

接收端:

1. 業務層調用getInputStream向通信層發起請求

2. 通信層通過creatPipe 建立壹個ParcelFileDescriptor數組,並將read端的pipe[0]返回給業務層

3. 業務層得到pipe 0 後,可以通過AutoCloseInputStream讀取數據。(如沒有數據,則阻塞,壹直等到有數據為止)

4. socket中讀取數據,寫入到通信層的pipe[1]的AutoCloseOutputStream。(pipe[1]壹旦寫入,第三步中pipe[2]就可以讀取出數據)

  • 上一篇:理科什麽專業好理科哪些專業好
  • 下一篇:合肥合力家園壹村小區周邊配套怎麽樣?
  • copyright 2024編程學習大全網