Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中進程間通信 (一)

Android中進程間通信 (一)

編輯:關於Android編程

在Android系統中,每一個應用程序都是由一些Activity和Service組成的,這些Activity和Service有可能運行在同一個進程中,也有可能運行在不同的進程中。那麼,不在同一個進程的Activity或者Service是如何通信的呢?這就是本文中要介紹的Binder進程間通信機制了。

我們知道,Android系統是基於Linux內核的,而Linux內核繼承和兼容了豐富的Unix系統進程間通信(IPC)機制。有傳統的管道(Pipe)、信號(Signal)和跟蹤(Trace),這三項通信手段只能用於父進程與子進程之間,或者兄弟進程之間;後來又增加了命令管道(Named Pipe),使得進程間通信不再局限於父子進程或者兄弟進程之間;為了更好地支持商業應用中的事務處理,在AT&T的Unix系統V中,又增加了三種稱為“System V IPC”的進程間通信機制,分別是報文隊列(Message)、共享內存(Share Memory)和信號量(Semaphore);後來BSD Unix對“System V IPC”機制進行了重要的擴充,提供了一種稱為插口(Socket)的進程間通信機制。

Android深入淺出之Binder機制一文從情景出發,深入地介紹了Binder在用戶空間的三個組件Client、Server和Service Manager的相互關系,Android Binder設計與實現一文則是詳細地介紹了內核空間的Binder驅動程序的數據結構和設計原理。非常感謝這兩位作者給我們帶來這麼好的Binder學習資料。總結一下,Android系統Binder機制中的四個組件Client、Server、Service Manager和Binder驅動程序的關系如下圖所示:

 

\

 

1. Client、Server和Service Manager實現在用戶空間中,Binder驅動程序實現在內核空間中

2. Binder驅動程序和Service Manager在Android平台中已經實現,開發者只需要在用戶空間實現自己的Client和Server

3. Binder驅動程序提供設備文件/dev/binder與用戶空間交互,Client、Server和Service Manager通過open和ioctl文件操作函數與Binder驅動程序進行通信

4. Client和Server之間的進程間通信通過Binder驅動程序間接實現

5. Service Manager是一個守護進程,用來管理Server,並向Client提供查詢Server接口的能力

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