《Android Property
每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置
或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。
在系统初始化时,Android将分配一个共享内存区来存储的属性。这些是由“init”守护进程完成的,其源代
码位于:device/system/init。“init”守护进程将启动一个属性服务。属性服务在“init”守护进程中运行。
每一个客户端想要设置属性时,必须连接属性服务,再向其发送信息。属性服务将会在共享内存区中修改和
创建属性。任何客户端想获得属性信息,可以从共享内存直接读取。这提高了读取性能。
客户端应用程序可以调用libcutils中的API函数以GET/SET属性信息。libcutils的源代码位于:device
/libs/cutils。API函数是:
int property_get(const char *key, char *value, const char *default_value);
int property_set(const char *key, const char *value);
而libcutils又调用libc中的 __system_property_xxx 函数获得共享内存中的属性。libc的源代码位
于:device/system/bionic。
属性服务调用libc中的__system_property_init函数来初始化属性系统的共享内存。当启动属性服务时,
将从以下文件中加载默认属性:
/ default.prop
/system/build.prop
/system/default.prop
/data/local.prop
属性将会以上述顺序加载。后加载的属性将覆盖原先的值。这些属性加载之后,最后加载的属性会被保持在
/data/property中。
特别属性
如果属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。
如果属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。
如果属性名称以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的
属性名。(这是很巧妙的。 netresolve模块的使用这个属性来追踪在net.*属性上的任何变化。)
属性“ ctrl.start ”和“ ctrl.stop ”是用来启动和停止服务。每一项服务必须在/init.rc中定义.系统启动时,
与init守护进程将解析init.rc和启动属性服务。一旦收到设置“ ctrl.start ”属性的请求,属性服务将使用该
属性值作为服务名找到该服务,启动该服务。这项服务的启动结果将会放入“ init.svc.<服务名>“属性中
。客户端应用程序可以轮询那个属性值,以确定结果。
Android toolbox程序
Android toolbox程序提供了两个工具: setprop和getprop获取和设置属性。其使用方法:
getprop <属性名>
setprop <属性名><<属性值>
Java
在Java应用程序可以使用System.getProperty()和System.setProperty()函数获取和设置属性。
Action
默认情况下,设置属性只会使"init"守护程序写入共享内存,它不会执行任何脚本或二进制程序。但是,您
可以将您的想要的实现的操作与init.rc中某个属性的变化相关联.例如,在默认的init.rc中有:
# adbd on at boot in emulator
on property:ro.kernel.qemu=1
start adbd
on property:persist.service.adb.enable=1
start adbd
on property:persist.service.adb.enable=0
stop adbd
这样,如果你设置persist.service.adb.enable为1 ,"init"守护程序就知道需要采取行动:开启adbd服
务。
文章中提到的共享内存就是Android特有的共享方式:ashmen
Ashmem是一个匿名共享内存(Anonymous SHared MEMory)系统,该系统增加了接口因此进程间可
以共享具名内存块。举一个例子,系统可以利用Ashmem存储图标,当绘制用户界面的时候多个进程也可
Android 的属性系统(翻译) - Tekkaman Itachi - CSDN博客第1页 共2页
http://blog.csdn.net/tekkamanitachi/archive/2009/06/18/4280982.aspx
Ashmem是一个匿名共享内存(Anonymous SHared MEMory)系统,该系统增加了接口因此进程间可
以共享具名内存块。举一个例子,系统可以利用Ashmem存储图标,当绘制用户界面的时候多个进程也可
以访问。Ashmem优于传统Linux共享内存表现在当共享内存块不再被用的时候,它为Kernel提供一种回
收这些共享内存块的手段。如果一个程序尝 试访问Kernel释放的一个共享内存块,它将会收到一个错误提
示,然后重新分配内存并重载数据。
Android 的属性系统(翻译) - Tekkaman Itachi - CSDN博客第2页 共2页
http://blog.csdn.net/tekkamanitachi/archive/2009/06/18/4280982.aspx
《Android Property相关推荐
- Android Property Animation属性动画:scale缩放动画(4)
Android Property Animation属性动画:scale缩放动画(4) 和之前我写的附录文章1,2,3相似,本文将接着使用Android Property Animation属性 ...
- 《Android开发艺术探索》读书笔记 (7) 第7章 Android动画深入分析
本节和<Android群英传>中的第七章Android动画机制与使用技巧有关系,建议先阅读该章的总结 第7章 Android动画深入分析 7.1 View动画 (1)android动画分为 ...
- 《Android 移动应用基础教程(Android Studio)(第2版)》【课本客观题】+【学习通2023春】【参考答案】
文章目录 超星学习通智能终端软件开发(基于Android Studio环境)章节作业(39) 一 二 三 四 五 六 课本一 课本二 课本三 课本四 课本五 课本六(无) 课本七 课本八 课本九 课本 ...
- 《Android系统开发》笔记
<Android系统开发>笔记1:Android系统概述 Android四层架构: 1. Linux Kernel&driver层 a.依赖于Linux 2.6内核,包括安全性,内 ...
- 2017-2018-2 20165236 实验四《Android开发基础》实验报告
2017-2018-2 20165236 实验四<Android开发基础>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:郭金涛 ...
- 《Android传感器开发与智能设备案例实战》——导读
本节书摘来自异步社区<Android传感器开发与智能设备案例实战>一书中的目录,作者 朱元波,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 前 言 第1章 ...
- Android项目驱动式开发教程 第2版,《Android项目驱动式开发教程》第一章开发入门.ppt...
<Android项目驱动式开发教程>第一章开发入门 1.4 项目框架分析 4 android:versionName="1.0" > 5 8 第9行代码andro ...
- android程序设计期末试题b,《Android程序设计》期末试题B.doc
<Android程序设计>期末试题B.doc 一.判断题(每小题2分,共10分) 1.Android是J2ME的一个实现.( ) 2.View是ViewGroup的子类.( ) 3.一个I ...
- 《Android应用开发入门经典(第3版)》——第6.1节创建演示应用
本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的第6章,第6.1节创建演示应用,作者 [美]Carmen Delessio , Lauren Darcey , Sh ...
最新文章
- laravel5.4 关于数据填充的知识
- Tornado 类与类组合降低耦合
- Web Dynpro Controller
- Linux内核网络(一)——初探内核网络
- 对Python中几种快速排序的实现以及运行时间进行比较
- 5ic计算机考试考卷读取错误,最新计算机一级试题第五套
- linux uname 命令 打印系统信息
- 关于_WIN32_WINNT的含义
- Django 文件上传与下载的相关问题
- 安卓应用安全指南 六、困难问题
- php过滤危险路径,PHP技巧:php过滤危险html代码
- 程序执行原理(科普)
- 什么情况下需要搭建大数据平台
- 取代奶瓶Minidwep-gtk破解WPA 全攻略
- 屏幕放大缩小及标注神器【Zommit】
- word,wps设置页眉和页码
- 指付通盗刷信用卡维权连载--9月5日给上海银监局的一封信
- 舞伴问题(数据结构队列,c语言版)
- 卡内基梅隆大学计算机研究生水平,卡内基梅隆大学计算机研究生
- 每天一段,成功拿到你心仪的offer
热门文章
- java jackson unicode_如何让Jackson JSON生成的数据包含的中文以unicode方式编码
- 驱动依赖_自噬依赖的分泌因子的产生促进致癌RAS驱动的侵袭
- itextpdf将带复选框的html_HTML基础知识
- 这7个问题,软件测试面试必问!!!
- HEVC里面CU与TU打印到屏幕及提取到txt文本
- linux删除5天前文件和目录,Linux Shell命令定时删除指定目录下n天前的文件
- linux系统调用函数printf,使用AT&T语法将整数打印为字符串,并使用Linux系统调用而不是printf...
- php mysql odbc_使用PHP和MySQL专用接口以及ODBC接口
- html+fadein动画,使用Animate.css制作超炫的CSS3动画
- google支付接入PHP语言,PHP语言开发Paypal支付demo的具体实现