Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> android如何實現進程間通信

android如何實現進程間通信

編輯:Android開發教程

一.使用bundle

當我們在一個進程中啟動了另一個進程的activity、service、receiver,我們就可以在bundle中附加我們需要傳輸給遠程進程的信息並通過intent發送出去。

我們傳輸的數據要必須能被序列化.

以上原理都是bundle

當然service也是支持通過intent啟動來傳遞數據的

這種方案是一種最最簡單的進程間通信

二.使用文件共享

三.使用Messenger

1.簡介

Messenger的底層是aidl

2.Aidl和messager的區別

原因是AIDL可以處理多線程、多客戶端並發訪問的,而Messenger只能是單線程處理。

Messenger、AIDL、Binder這三個東西的關系是這樣的: AIDL是對Binder的封裝,Messenger是對AIDL的封裝,就是為了更好的方便開發者在不同場景下使用進程間通信。

四.使用AIDL

1.aidl的基礎

aidl常常基於綁定服務,aidl底層是binder

綁定服務不屬於跨進程,所以不要和aidl混合起來使用,只是說ipc時如使用aidl方式常常使用綁定服務。

2.aidl原理

基於proxy_stub模式說明,具體參以前博客。

3.具體流程

!!!其實最核心的是aidl接口的定義。

服務端

1. 服務端首先要創建一個service用來監聽客戶端的鏈接請求

2. 然後創建一個aidl文件,將暴露給客戶端的接口在這個aidl文件中聲明。

3. 最後在service中實現這個aidl即可。

客戶端

1. 客戶端所要做的事情就稍微簡單一些,首先需要綁定服務端的service,

2. 綁定成功後,將服務端返回的binder對象轉成aidl接口所屬的類型,

3. 接著就可以調用aidl中的方法了。

上邊描寫的只是一個感性的過程,aidl的實現過程遠不止這麼簡單。

4.一個例子

見:

https://github.com/zhujainxipan/MyApplication

http://android.jobbole.com/80789/

五.使用ContentProvider

六.使用socket

URL:http://www.bianceng.cn/OS/extra/201608/50387.htm

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved