每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在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相关推荐

  1. Android Property Animation属性动画:scale缩放动画(4)

     Android Property Animation属性动画:scale缩放动画(4) 和之前我写的附录文章1,2,3相似,本文将接着使用Android Property Animation属性 ...

  2. 《Android开发艺术探索》读书笔记 (7) 第7章 Android动画深入分析

    本节和<Android群英传>中的第七章Android动画机制与使用技巧有关系,建议先阅读该章的总结 第7章 Android动画深入分析 7.1 View动画 (1)android动画分为 ...

  3. 《Android 移动应用基础教程(Android Studio)(第2版)》【课本客观题】+【学习通2023春】【参考答案】

    文章目录 超星学习通智能终端软件开发(基于Android Studio环境)章节作业(39) 一 二 三 四 五 六 课本一 课本二 课本三 课本四 课本五 课本六(无) 课本七 课本八 课本九 课本 ...

  4. 《Android系统开发》笔记

    <Android系统开发>笔记1:Android系统概述 Android四层架构: 1. Linux Kernel&driver层 a.依赖于Linux 2.6内核,包括安全性,内 ...

  5. 2017-2018-2 20165236 实验四《Android开发基础》实验报告

    2017-2018-2 20165236 实验四<Android开发基础>实验报告 一.实验报告封面 课程:Java程序设计       班级:1652班       姓名:郭金涛     ...

  6. 《Android传感器开发与智能设备案例实战》——导读

    本节书摘来自异步社区<Android传感器开发与智能设备案例实战>一书中的目录,作者 朱元波,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 前 言 第1章 ...

  7. Android项目驱动式开发教程 第2版,《Android项目驱动式开发教程》第一章开发入门.ppt...

    <Android项目驱动式开发教程>第一章开发入门 1.4 项目框架分析 4 android:versionName="1.0" > 5 8 第9行代码andro ...

  8. android程序设计期末试题b,《Android程序设计》期末试题B.doc

    <Android程序设计>期末试题B.doc 一.判断题(每小题2分,共10分) 1.Android是J2ME的一个实现.( ) 2.View是ViewGroup的子类.( ) 3.一个I ...

  9. 《Android应用开发入门经典(第3版)》——第6.1节创建演示应用

    本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的第6章,第6.1节创建演示应用,作者 [美]Carmen Delessio , Lauren Darcey , Sh ...

最新文章

  1. laravel5.4 关于数据填充的知识
  2. Tornado 类与类组合降低耦合
  3. Web Dynpro Controller
  4. Linux内核网络(一)——初探内核网络
  5. 对Python中几种快速排序的实现以及运行时间进行比较
  6. 5ic计算机考试考卷读取错误,最新计算机一级试题第五套
  7. linux uname 命令 打印系统信息
  8. 关于_WIN32_WINNT的含义
  9. Django 文件上传与下载的相关问题
  10. 安卓应用安全指南 六、困难问题
  11. php过滤危险路径,PHP技巧:php过滤危险html代码
  12. 程序执行原理(科普)
  13. 什么情况下需要搭建大数据平台
  14. 取代奶瓶Minidwep-gtk破解WPA 全攻略
  15. 屏幕放大缩小及标注神器【Zommit】
  16. word,wps设置页眉和页码
  17. 指付通盗刷信用卡维权连载--9月5日给上海银监局的一封信
  18. 舞伴问题(数据结构队列,c语言版)
  19. 卡内基梅隆大学计算机研究生水平,卡内基梅隆大学计算机研究生
  20. 每天一段,成功拿到你心仪的offer

热门文章

  1. java jackson unicode_如何让Jackson JSON生成的数据包含的中文以unicode方式编码
  2. 驱动依赖_自噬依赖的分泌因子的产生促进致癌RAS驱动的侵袭
  3. itextpdf将带复选框的html_HTML基础知识
  4. 这7个问题,软件测试面试必问!!!
  5. HEVC里面CU与TU打印到屏幕及提取到txt文本
  6. linux删除5天前文件和目录,Linux Shell命令定时删除指定目录下n天前的文件
  7. linux系统调用函数printf,使用AT&T语法将整数打印为字符串,并使用Linux系统调用而不是printf...
  8. php mysql odbc_使用PHP和MySQL专用接口以及ODBC接口
  9. html+fadein动画,使用Animate.css制作超炫的CSS3动画
  10. google支付接入PHP语言,PHP语言开发Paypal支付demo的具体实现