Android System Property

Android System Property

ID:37708211

大小:188.71 KB

页数:14页

时间:2019-05-29

Android System Property_第1页
Android System Property_第2页
Android System Property_第3页
Android System Property_第4页
Android System Property_第5页
资源描述:

《Android System Property》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、AndroidSystemProperty一SystemProperty  代码中大量存在:SystemProperties.set()/SystemProperties.get();通过这两个接口可以对系统的属性进行读取/设置,顾名思义系统属性,肯定对整个系统全局共享。通常程序的执行以进程为单位各自相互独立,如何实现全局共享呢?SystemProperties是怎么一回事,又是如何实现的呢?      属性系统是android的一个重要特性。它作为一个服务运行,管理系统配置和状态。所有这些配置和状态都是属性。每个属性是一个

2、键值对(key/valuepair),其类型都是字符串。这些属性可能是有些资源的使用状态,进程的执行状态,系统的特有属性……      可以通过命令adbshell:    getprop查看手机上所有属性状态值。      或者getpropinit.svc.bootanim制定查看某个属性状态      使用setpropinit.svc.bootanimstart设置某个属性的状态特别属性:  如果属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。  如果属性名称以“persist.”开头

3、,当设置这个属性时,其值也将写入/data/property。  如果属性名称以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的属性名。    (这是很巧妙的。netresolve模块的使用这个属性来追踪在net.*属性上的任何变化。)  属性“ctrl.start”和“ctrl.stop”是用来启动和停止服务。每一项服务必须在/init.rc中定义.系统启动时,与init守护    进程将解析init.rc和启动属性服务。一旦收到设置“ctrl.start”属性的请求,属性服

4、务将使用该属性值作为服务    名找到该服务,启动该服务。这项服务的启动结果将会放入“init.svc.<服务名>“属性中。客户端应用程序可以轮询那个属性值,以确定结果。二framework访问系统服务流程  framework通过SystemProperties接口操作系统属性,SystemProperties通过JNI调用访问系统属性。  frameworksbasecorejavaandroidosSystemProperties.java:publicclassSystemProperties{//JN

5、IprivatestaticnativeStringnative_get(Stringkey,Stringdef);privatestaticnativevoidnative_set(Stringkey,Stringdef);publicstaticStringget(Stringkey,Stringdef){returnnative_get(key,def);}publicstaticvoidset(Stringkey,Stringval){native_set(key,val);}}Jni代码位置:frameworks

6、basecorejniandroid_os_SystemProperties.cpp获取系统属性阻塞方式:staticjstringSystemProperties_getSS(){len=property_get(key,buf,"");} 操作在bioniclibcbionicsystem_properties.c中:int__system_property_get(constchar*name,char*value){//数据已经存储在内存中__system_property_area__等待读取完返回

7、constprop_info*pi=__system_property_find(name);return__system_property_read(pi,0,value);}       进程启动后数据已经将系统属性数据读取到相应的共享内存中,保存在全局变量__system_property_area__;进程之间都是独立的,系统属性数据是如何读取到当前进程空间中的呢?后续介绍。设置属性异步socket通信:int__system_property_set(constchar*key,constchar*value){m

8、sg.cmd=PROP_MSG_SETPROP;strlcpy(msg.name,key,sizeofmsg.name);strlcpy(msg.value,value,sizeofmsg.value);err=send_prop_msg(&msg);}staticintsend_prop

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。