Android培训班(20)

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 06:18 点击:

在android系统里,设计有一种系统叫做属性系统,它是用来做什么呢?这样设计有什么优势呢?其实这个属性系统主要是用来保存系统配置,或者用来交换不同进程的信息。这样的系统最大的优势是统一了系统配置的方式,统一了信息交换方式,通过共享内存的方式提高系统的性能。

下面就来分析属性系统的初始化函数,代码如下:

#001  void property_init(void)

#002  {

#003      init_property_area();

这行代码是调用函数init_property_area来设置属性内存的区域。

 

#004      load_properties_from_file(PROP_PATH_RAMDISK_DEFAULT);

这行代码是从ramdisk盘里加载属性文件。

 

#005  }

 

在这个函数里,需要查看一下宏定义,如下:

#define PROP_PATH_RAMDISK_DEFAULT "/default.prop"

也就是从内存盘里加载属性文件/default.prop,并把这些属性放到属性系统里。

 

 

接着来分析函数init_property_area是怎么创建共享内存,并把属性放到里面给所有进程共享使用的,代码如下:

#001  static int init_property_area(void)

#002  {

#003      prop_area *pa;

#004 

#005      if(pa_info_array)

#006          return -1;

这段代码是判断当属性信息数组已经初始化,就直接返回。

 

#007 

#008      if(init_workspace(&pa_workspace, PA_SIZE))

#009          return -1;

这段代码是调用函数init_workspace创建共享内存。

 

#010 

#011      fcntl(pa_workspace.fd, F_SETFD, FD_CLOEXEC);

这行代码是设置共享内存的执行结束后关闭。

 

#012 

#013      pa_info_array = (void*) (((char*) pa_workspace.data) + PA_INFO_START);

这行代码是保存创建共享内存指针。

 

#014 

#015      pa = pa_workspace.data;

#016      memset(pa, 0, PA_SIZE);

这段代码是清空属性共享的内存。

 

#017      pa->magic = PROP_AREA_MAGIC;

#018      pa->version = PROP_AREA_VERSION;

这段代码是设置属性共享内存的版本号。

 

#019 

#020          /* plug into the lib property services */

#021      __system_property_area__ = pa;

这行代码是设置属性共享内存可以给库的属性共享服务使用。

 

#022 

#023      return 0;

#024  }

#025 

 

从上面的函数里可以看到一个创建共享内存的函数,它是怎么样实现创建共享内存的呢?现在来分析它的代码

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Android 完全退出程序
    • 原创:Android应用开发-Andorid歌词秀,含源码
    • android 屏幕保护
    • Android手机软件汉化教程---第四课 dex文件汉化
    • 众多Android 开源项目推荐,给力工作给力学习
    • Android Audio代码分析4
    • Android得到已安装的应用程序信息!
    • Android开发者指南(29) —— USB Host and Accessory
    • Android成长的幕后推手:工程师鲁宾
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1