本文旨在說明 Firefox OS 內部如何管理和啟動應用程式,主要是針對 Firefox OS 平台開發者以及正在移植 Firefox OS 到新硬體裝置上的開發者,如果你只是一個單純 App 開發者並不會需要知道,不過有興趣的話還是可以看看了解 Firefox OS。
App 啟動程序
當 app 被啟動時,主畫面 app (Home screen app) 會透過 App
API 取得 app 的參照,然後呼叫 App.launch()
方法來啟動 app。
Gecko 收到相關請求後會發送一個含有 app 詳細資訊的 mozChromeEvent
到系統 app (System app),系統 app 接著會將一個 <iframe>
加入 DOM 樹(DOM tree)中,然後將 app 載入該 <iframe>
裡,直到 app 終止前這個 iframe 就是 app 的家。
每一支 app 都需要一個描述該 app 的 manifest 檔,app 包也需要遵照特定檔案階層,詳情請見 App manifest。
和 Gecko 溝通
Gecko 和 Gaia' 系統 app 之間的溝通是經由 mozChromeEvent
以及 mozContentEvent
完成。 mozChromeEvent
s 是從 chrome 廣播到內容,而 mozContentEvent
s 是從內容廣播到 chrome,這些溝通主要在控管受信任 UI 的創建與終止,還有在為通知和其他任務,包括通知系統 app 啟動某個 app,提供必要的功能。
Note: 請參考 System app 文件 以取得更多有關這些事件如何運作的細節,同時也可以參考相關的原始碼 b2g/chrome/content/shell.js
。