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
      });
    },
  • 相关阅读:
    linux文件锁flock【转】
    无尽的悲伤
    go的临时对象池--sync.Pool
    golang 小知识-持续更新中
    【转】Go Channels
    Golang文件名命名规则
    Parquet存储格式
    预装的Office2016,文件图标表显示以及新建失败问题解决 方法
    Gamma编码及Delta编码概述
    java web开发环境配置系列(二)安装tomcat
  • 原文地址:https://www.cnblogs.com/code-4-fun/p/4698501.html
Copyright © 2011-2022 走看看