Android培训班(20)
在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培训班(20)相关推荐
- Android培训班(62)dex文件格式3
SHA-1签名字段 从dex文件头里,已经看到前面有一个4字节的字段检验码了,那为什么又需要一个SHA-1签名字段呢? 这不是重复了吗?起初始看来,好像是有点重复,可是仔细考虑一下,这样设计,还 ...
- Android培训班(42)
<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> Android.mk文件是用来向编译系统描述项目组织和编译方式,实际上 ...
- Android培训班(9)
android系统的初始化过程是从那里开始呢?它在加载linux基本内核后,就开始运行一个初始化进程,叫做init进程,那么怎么样知道它是加载init进程的呢?难道上天就注定的吗?呵呵,不是的,原来是 ...
- Android培训班 4
要想Android运行起来,不但要编译内核正确,还需要有正确地安装根文件系统,才可以运行起来.第一步,就是从模拟器里提取data目录的数据.也许你会问,为什么要从模拟器里提取呢?因为这样做是最方便的, ...
- android 电池20 提醒,当日修冷知识:滴咚!为啥手机电量低于20%就会自动提醒?...
原标题:当日修冷知识:滴咚!为啥手机电量低于20%就会自动提醒? "滴,手机电量不足20%,请及时充电." 每当手机突然跳出这一行字的时候 都彷佛晴天霹雳,噩梦来袭. &q ...
- miui 7.7.20 android,MIUI12 20.7.23更新,第二批稳定版公测陆续推送!
MIUI12 20.7.23更新,第二批稳定版公测陆续推送! 2020-07-23 22:17:18 0点赞 0收藏 0评论 创作立场声明:本文由我原创,转载请标注来源. 迎接我们的是这周的最后一个版 ...
- Android培训班(45)
<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } A:link { so-language: zxx } --> 帧布局(Fra ...
- Android培训班(44)
<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> layout-land和layout-port目录主要用来保存应用程序 ...
- Android培训班(1)
Android是基于Linux内核的软件平台和操作系统,是Google在2007年11月5日公布的手机操作系统平台,早期由Google开发,后期由开放手机联盟(Open Handset Allianc ...
最新文章
- win7下安装配置tomcat,java运行环境
- c++98不支持set初始化列表
- matlab 高斯一阶导,将Matlab高斯导数转换为Opencv
- 【转】详谈for循环里面的break和continue语句
- 关于自动布局更新约束方法的总结
- Enterprise Vault 2007 Series [PST Migration]
- python使用ssh 中文_使用Python进行SSH的最简单方法是什么?
- 你知道Arrays.asList 有坑吗?千万别踩啊!
- 前端面试instanceof_【面试准备】每日前端面试题 45 (前端校招字节跳动面试4)...
- C++游戏编程教程(一)
- [3DMax]物体在场景内居中和物体内坐标居中
- html微信分享图标设置,微信分享之设置分享title和icon
- 智能家居无线方案ZIGBEE、Z-Wave、WIFI、蓝牙、红外、GPRS以及NB-IOT对比
- tushare实战分析美元黄金与美债收益率、利率的关系
- 计算机在职研是不是双证,计算机双证在职研究生好考吗?
- 任志强:松房贷等政策出台后 房价将U型缓慢回升
- ThinkPHP5整合原生Swoole实现NBA比赛图文直播以及聊天室功能
- 我国2016研发的超级计算机,我国超级计算机研制取得重大突破
- 【Poco学习笔记】Poco库win10下编译(超详细,小白都能看得懂)
- window下使用vnc远程登录linux图形界面和运行应用程序 和odroid Xu4开发板的使用和视频接口VGA、DVI、HDMI的联系