Android跨進程通信

簡介

由於android系統中應用程序之間不能共享內存。因此,在不同應用程序之間交互數據(跨進程通訊)就稍微麻煩一些。在android SDK中提供了4種用於跨進程通訊的方式。這4種方式正好對應於android系統中4種應用程序組件:Activity、Content Provider、Broadcast和Service。其中Activity可以跨進程調用其他應用程序的Activity;Content Provider可以跨進程訪問其他應用程序中的數據(以Cursor對象形式返回),當然,也可以對其他應用程序的數據進行增、刪、改操 作;Broadcast可以向android系統中所有應用程序發送廣播,而需要跨進程通訊的應用程序可以監聽這些廣播;Service和Content Provider類似,也可以訪問其他應用程序中的數據,但不同的是,Content Provider返回的是Cursor對象,而Service返回的是Java對象,這種可以跨進程通訊的服務叫AIDL服務。
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接口的能力
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章