(FFOS Gecko & Gaia) IPC - 一种“猥琐的”IPC方式
2015-08-03 09:27
441 查看
这几天在分析b2g中OTA部分的代码,记录一下settings与system app的IPC方式。
说是“猥琐的”IPC方式,只是因为我没见过,呵呵,不过请教了同事,这种方式在b2g中还是比较常见的。
简单的说,这种IPC方式是通过系统的preference来实现的,某一个preference是一个共享的媒介,在ProcessA中set一个preference,然后在ProcessB中监听这个preference,preference的值就当做是ProcessA传递给ProcessB的数据。
结合代码看一下就明白了。
1. gaia/apps/settings/js/panels/about/update_check.js
settings作为ProcessA,将'gaia.system.checkForUpdates'设置为true。
2. gaia/apps/system/js/update_manager.js
system app作为ProcessB,监听‘gaia.system.checkForUpdates’的变化,如果变化的值为true,则进行下一步check。
说是“猥琐的”IPC方式,只是因为我没见过,呵呵,不过请教了同事,这种方式在b2g中还是比较常见的。
简单的说,这种IPC方式是通过系统的preference来实现的,某一个preference是一个共享的媒介,在ProcessA中set一个preference,然后在ProcessB中监听这个preference,preference的值就当做是ProcessA传递给ProcessB的数据。
结合代码看一下就明白了。
1. gaia/apps/settings/js/panels/about/update_check.js
settings作为ProcessA,将'gaia.system.checkForUpdates'设置为true。
this._settings.createLock().set({ 'gaia.system.checkForUpdates': true });
2. gaia/apps/system/js/update_manager.js
system app作为ProcessB,监听‘gaia.system.checkForUpdates’的变化,如果变化的值为true,则进行下一步check。
SettingsListener.observe('gaia.system.checkForUpdates', false, this.checkForUpdates.bind(this)); ………… checkForUpdates: function su_checkForUpdates(shouldCheck) { if (!shouldCheck) { return; } this._dispatchEvent('force-update-check'); if (!this._settings) { return; } var lock = this._settings.createLock(); lock.set({ 'gaia.system.checkForUpdates': false }); },
相关文章推荐
- NSURLSession的代理为什么使用retain?
- OpenSCManager failed - 拒绝访问
- Windows环境下main()函数传入参数
- 杭电oj1789 Doing Homework again(贪心与队列完美碰撞)
- [2015hdu多校联赛补题]hdu5293 Tree chain problem
- Check GitLab API access: FAILED: Failed to connect to internal API
- public static void main(String arg[]) 详细解释
- bower failed: UNABLE_TO_VERIFY_LEAF_SIGNATURE
- 70. Climbing Stairs
- repair windows ntfs part on ubuntu
- 《MFC游戏开发》笔记九 游戏中的碰撞判定初步&怪物运动简单AI
- hdoj 1022Train Problem I
- HDU 1789 Doing Homework again 【队列+贪心】
- Snail—算法学习之内部排序
- HUAS Summer Trainning #3 N
- HUAS Summer Trainning #3 M
- HUAS Summer Trainning #3 L
- Snail—算法学习之最大公约、最小公倍
- HUAS Summer Trainning #3 K
- Airplay vs DLNA vs Miracast