深刻解析 Android 的 AIDL 介面
在 Android 應用框架裡,應用層級的軟體大多是 Java 類別,而系統層級的軟體大多是 C
或 C++類別。Android 使用 JNI 介面來達成這個目標。例如,在 Android 裡有個
MediaPlayer.cpp 類別,當它搭配上 JNI 介面之後,在 VM 上執行的 MediaPlayer.java
就可以透過 JNI 介面與 MediaPlayer.cpp 類別溝通了。
圖 1-1
基 於 這 樣 的 架 構 , 我 門 就 可 以 盡 量 將 MediaPlayer.java 裡 的 程 式 邏 輯 移 入
MediaPlayer.cpp 類 別 裡 , 以 便 加 快 程 式 的 執 行 速 度 。 此 外 , 以 JNI 介 面 包 裝
MediaPlayer.cpp 類別,並且銜接相互輝映的 MediaPlayer.java 類別,可以讓眾多的
Java 應用程式透過 MediaPlayer.java 來使用 MediaPlayer.cpp 類別的服務。這是一種
非常有用的包裝技巧,藉由包裝來創造更多的應用機會。
為了進一步創造更多的應用機會,可以替 MediaPlayer.java 類別加上 AIDL 介面,讓更
多的 Java 應用程式能與 MediaPlayer.java 類別進行遠距的 IPC 溝通。如下圖所示:
圖 1-2
上圖表示出 JNI 在 Android 裡扮演的角色,以及 Android 框架裡 Java 與 C/C++類別融合
的基本架構。上面的图 1-2 是一個較為抽象的圖,凸显 JNI 与 AIDL 的相互呼應之角色。
於此,以高煥堂所寫的第 2 本 Android 書:<<Android 軟體架構設計>> 一书里的范例:
评论0
最新资源