您的位置:首页 > 大数据 > 人工智能

(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。

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
});
},
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: