### Android原生Setting分析 #### 引言 在Android系统中,`Setting`模块扮演着极其重要的角色,它不仅提供了用户界面来调整系统的各种配置,还负责存储和管理用户的个性化设置。本文将深入剖析Android原生`Setting`的内部结构、数据存储方式以及其工作原理,特别是针对`Sound & Display`下的`Orientation`设置项进行详细解读。 #### Android Setting的源码布局 Android自带的应用程序,包括`Setting`,主要存储在`packages/apps`目录下。该目录下的关键文件和目录有: - **Resource(res)**:包含应用所需的资源文件,如图像、布局和字符串资源。 - **Source Code(src)**:存放应用的主要源代码。 - **Tests**:用于存放单元测试和集成测试的代码。 - **Android.mk**:是项目的编译脚本,定义了编译过程中的依赖和规则。 - **AndroidManifest.xml**:这是应用程序的全局配置文件,包含了应用的基本信息和权限声明。 #### 解析Setting的工作流程 以`Sound & Display -> Orientation`为例,理解Setting是如何工作的: 1. **选项定义**:在`res/xml/setting.xml`中定义了`Settings`包含的所有选项,其中`Sound & Display`相关的配置可以在该文件中找到。 2. **映射到源代码**:通过`targetClass`属性,可以定位到具体的源代码实现,例如`SoundAndDisplaySettings`类。 3. **子选项定义**:`Sound & Display`下包含多个子选项,如`Orientation`。其具体定义可在`res/xml/sound_and_display_settings.xml`中找到。 4. **字符串资源**:在`packages/apps/Settings/res/values/strings.xml`或其本地化版本中,可以查找到选项的描述文本,比如`Orientation`对应的英文描述。 #### 数据的存储与读取 - **数据存储**:`Setting`的设置值最终会被保存在`com.android.providers.settings/databases/settings.db`数据库中,这是一个SQLite数据库。 - **修改默认值**:开发者可以通过直接修改`settings.db`中的值来批量更改默认设置,这在批量生产前是非常有用的。另一种方式是在源代码层面进行修改,然后再重新编译系统。 #### 系统启动时的设置加载 系统在启动时会从`settings.db`中读取并应用所有设置。为了确保正确加载,系统需要确定编译时的策略配置,这通常在`build/target/product/core.mk`文件中指定。 - **Policy选择**:`PRODUCT_POLICY`变量决定了系统启动时采用的策略,如`android.policy_phone`对应的是手机策略。 - **Window Manager**:`PhoneWindowManager`类负责处理屏幕方向等设置。在`PhoneWindowManager`的`update`方法中,会从数据库读取`Orientation`的设置值,并据此调整设备的显示方向。 #### 结论 通过对Android原生`Setting`的深入分析,我们了解到其内部的结构、数据流以及如何在系统层面控制和管理各种设置。这不仅有助于开发者更深入地理解Android系统的工作原理,也为定制化系统或应用提供了宝贵的技术背景知识。在实际开发中,理解`Setting`模块的架构和数据管理机制,能够帮助开发者更高效地进行系统配置和优化,提升用户体验。
- shurenli2013-03-21看了一下,还行,有点用处。。。
- 单放机2013-03-09小菜鸟来学习了
- 粉丝: 3
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- alivfs.sqlite-shm
- 【java毕业设计】餐饮连锁店管理系统的设计与实现源码(springboot+vue+mysql+说明文档+LW).zip
- 基于java Swing实现的ATM银行自助服务系统含源码
- Listening Exercise 3 Part 2.mp3
- HengCe-18900-2024-2030全球与中国精细金属掩模版(FMM)市场现状及未来发展趋势-样本.docx
- HengCe-18900-2024-2030中国EUV用相机市场现状研究分析与发展前景预测报告-样本.docx
- 一系列 JavaScript 练习
- 远程文件传输软件Xftp8.0
- Xshell8-8.0
- 摄影分享网站,基于springboot框架实现的“有光”摄影分享网站(源码+数据库+报告)