Android 的 HAL 技術, #4: Android Service 與 HAL Stub

jollen 發表於 November 28, 2009 9:56 PM

目前為止,我們提了「HAL Stub」的觀念,了解到 stub 是一種代理人的觀念,架構設計上,採取「provide operations」與「callback」機制,而不是採用「module」即 library 的 direct function call 做法。

接著,又提到「採取Service架構的方式」。在講解HAL stub的實作細節前,需要大略了解一下Android Service與HAL stub的關係;因為,架構設計上是「透過Android Service取得HAL stub提供的operations」。

取得HAL stub operations的程式碼實際上是實作在Native Service裡,相關的實作細節留待後續再做說明。

Android Service與HAL stub的關係

應用程式(Application)使用了Manager API,Manager API經由Android Service來到Native Service層,最後Native Service層再引用(invoke)HAL stub。這個過程,總共經過了以下3個介面,如下圖。

android-service-hal.png

1. 這是一個 remote interface,應用程式與Android Service在不同的 process 上執行。

2. 這是 Java native interface,實作上透過 JNI table 來對應 native method 與 native function。

3. 理論上,這是 HAL 層,實作上則是使用 HAL API 先取得 stub operations,再由 native service callback stub。

Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue

您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw