zoukankan      html  css  js  c++  java
  • (FFOS Gecko & Gaia) IPC

        这几天在分析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
      });
    },
  • 相关阅读:
    初涉数组
    声明
    简述java程序中的main方法
    概述java语言
    1.3 linux基础(三)
    linux基础之-screen命令
    1.2 linux基础(二)
    1.1 Linux基础(一)
    实验7-1-13 装箱问题
    实验7-1-12 组个最小数
  • 原文地址:https://www.cnblogs.com/code-4-fun/p/4698501.html
Copyright © 2011-2022 走看看