• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android属性系统简介,android属性简介

Android属性系统简介,android属性简介

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android 系统属性,android 查看系统属性,android 设置系统属性,android 属性动画,android textview属性等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android属性系统简介,android属性简介


 

  1、简介

  在android 系统中,为统一管理系统的属性,设计了一个统一的属性系统。每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。在编译的过程中会将各种系统参数汇总到build.proc 以及default.proc 这两个文件中,主要属性集中在build.proc中。系统在开机后将读取配置信息并构建共享缓冲区,加快查询速度。另外一个方面,SettingsProvider会在系统第一次初始化时(刷机第一次启动)后,将从Defaults.xml中读取数据然后写入数据库Settings.db 目录。并构建一个缓冲系统供其他应用查询。下面将详细讲述。

  2、Properties Type

  系统属性根据不同的应用类型,分为不可变型,持久型,网络型,启动和停止服务等。

   特别属性:

  属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。

  属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。

  属性名称以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的属性名。(这是很巧妙的。 netresolve模块的使用这个属性来追踪在net.*属性上的任何变化。)

  属性“ ctrl.start ”和“ ctrl.stop ”是用来启动和停止服务。每一项服务必须在/init.rc中定义.系统启动时,与init守护进程将解析init.rc和启动属性服务。一旦收到设置“ ctrl.start ”属性的请求,属性服务将使用该属性值作为服务名找到该服务,启动该服务。这项服务的启动结果将会放入“ init.svc.<服务名>“属性中 。客户端应用程序可以轮询那个属性值,以确定结果。

  3、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

 

 

  4、Properties Source

  原则上,属性的设置可以出现在make android的任何环节。目前Properties 的设置以oppo版本为例:

  alps\build\target\board\generic_arm64\ system.prop

  alps\build\target\product\core.mk

  alps\build\tools\buildinfo.sh

  编译好后,被设置的系统属性主要存放在:

  这样,如果你设置persist.service.adb.enable为1 ,"init"守护程序就知道需要采取行动:开启adbd服务。

  \ default.prop                                                       手机厂商自己定制使用

  \system\build.prop                                               系统属性主要存放处

      \system\default.prop                                             default properties, 有存放与security 相关的属性

      \data\local.prop                                                    目前还没有看到有内置的情况

       \data\property下有4个prop文 件:persist.sys.timezone, persist.sys.language, persist.sys.country, persist.sys.localevar, 里面保存着属性名称以“persist.”开头的属性值。用户的persist 开头的属性都会保存副本在这个目录下

 

  5、Properties Run

    5.1    Properties init.

  在linux kernel 启动时,Android将分配一个共享内存区来存储的属性。这些是由“init”守护进程完成的,其源代码位于:system/core/init。“init”守护进程将启动一个属性服务。属性服务在“init”守护进程中运行。每一个客户端想要设置属性时,必须连接属性服务,再向其发送信息。属性服务将会在共享内存区中修改和创建属性。客户端想获得属性信息,可以从共享内存直接读取。这提高了读取性能。

  客户端应用程序可以调用libcutils中的API函数以GET/SET属性信息。libcutils的源代码位于:system/core/ibcutils。获取和设置属性的代码在properties.c里面,读取属性通过读共享内存得到,设置属性通过发送请求到property_service进行设置。API函数是:

int property_get(const char *key, char *value, const char *default_value);
int property_set(const char *key, const char *value);

int property_list(void(*propfn)(const char * key, const char * value, void * cookie), void * cookie);

system/core/init. c= > main( ) 进程将调用

= > property_init

= > init_property_area

void property_init( void ) {

//ashmem_area - android shared memory area是android共享内容存的一种方式

//打开ashmem设备,申请一段size大小的kernel空间内存,不去释放,以便供所有用户空间进程共享.

//内核驱动位于linux/mm/ashmem.c文件[luther.gliethttp].

 init_property_area( ) ; 
//#define PROP_PATH_RAMDISK_DEFAULT "/default.prop"

//从ramdisk中读取default.prop文件,将文件中的所有java环境中使用到的propt释放到

//这个共享内存中.

    load_properties_from_file( PROP_PATH_RAMDISK_DEFAULT) ;

}

 

  后面将调用properties_service.c, 启动最原始的properties service.

  然后通过libc_init_common. c, 的__system_properties_init函数完成内核的初始化工作。

  5.2、属性的访问

如果在C/C++ 层次,则可以使用libcutils 的下列函数来访问。

int property_get(const char *key, char *value, const char *default_value);
int property_set(const char *key, const char *value);

int property_list(void(*propfn)(



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android属性系统简介,android属性简介

相关文章

  • 2017-05-26Android实用技巧-缓存的使用分析
  • 2017-05-26dspam运维记录
  • 2017-05-26Android 测试自定义纯数字软键盘,android自定义
  • 2017-05-26Ubuntu Android Studio 无法通过起动器开启,android起动器
  • 2017-05-26从源码的角度理解四大组件的工作过程——Android开发艺术探索笔记
  • 2017-05-26安卓第五天笔记-对话框,安卓第五天笔记
  • 2017-05-26在Android应用程序使用YouTube API来嵌入视频,
  • 2017-05-26Android Fragment 剖析,androidfragment
  • 2017-05-26追踪表满导致keepalived vip 不通!
  • 2017-05-26我的android学习经历8,android学习经历8

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 安开发卓之Notification(一)代码直接能用,安开发notification
    • Android 之 图片压缩
    • 3.6 响应系统设置的事件(Configuration类)
    • moveTaskToback退后台的用法及作用,movetasktoback后台
    • Kotlin中功能操作与集合(KAD 11),
    • Android 数据库SQLite 写入SD卡,androidsqlite
    • Android焦点事件分发与传递机制
    • Android开发学习——Android项目的目录结构,android项目
    • linux tcp GSO和TSO实现
    • AsyncTask注意事项,面试技巧和注意事项

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有