欢迎来到天天文库
浏览记录
ID:37708211
大小:188.71 KB
页数:14页
时间:2019-05-29
《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
此文档下载收益归作者所有