本文讲述了Firefox OS 应用启动和管理的内部原理。对 Firefox OS 平台开发者和将操作系统移植到硬件的团队是有用的。如果您仅仅是一个应用开发者,则不用了解这些细节,但又何妨一读,因为它是十分有趣的过程。
app启动过程
当用户选择他们想要启动或需要启动的应用时, home screen app会通过App
API,获取到一个app的引用,之后会调用 App.launch()
方法启动这个应用。
Gecko 接收到请求后会向携带着 app 详情 向System app发送 mozChromeEvent
事件。 System app 对事件进行处理:向 DOM tree中插入一个新的 <iframe>
,并且在这个新的 <iframe>
中装载 app。 此后 frame 就会是 app 的 home 了,直到 app终止。
每个 app都需要一个 manifest文件来对 app进行描述,并且在它的包中有一个特定的文件结构。要了解更多详情,请参阅文章 App manifest。
与 Gecko 通信
Gecko 和 Gaia 系统应用之间的通信是通过 mozChromeEvent
和mozContentEvent
完成的。mozChromeEvent
是从 chrome 到 content 的广播;而
mozContentEvent
s 是从 content 到 chrome 的广播。 这种通信过程用来控制可信任UI 的创建和关闭,以及为通知和其他工作注入需要的功能,如告诉System app 启动一个 app 。
注意: 通过阅读 System app documentation 您可以获取到关于这些事件工作的更多的内容。 通过阅读 b2g/chrome/content/shell.js
您也可已获取到更多使用的细节。