• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 首选项概述
2
3首选项Preferences,适用于对`Key-Value`结构的数据进行存取和持久化操作。
4
5应用获取某个`Preferences`对象后,该存储对象中的数据将会被缓存在内存中,以便应用获得更快的数据存取速度。
6
7应用也可以将缓存的数据再次写回文本文件中进行持久化存储,由于文件读写将产生不可避免的系统资源开销,建议应用降低对持久化文件的读写频率。
8
9关于数据库锁机制,开发者无需关注其具体实现。
10
11## 基本概念
12
13- **Key-Value数据结构**
14
15  一种键值型的数据结构。`Key`是不重复的关键字,`Value`是数据值。
16
17- **非关系型数据库**
18
19  区别于关系数据库,不保证遵循ACID(Atomic、Consistency、Isolation及Durability)特性,不采用关系模型来组织数据,数据之间无关系。比如,以`Key-Value`数据结构组成的数据库。
20
21## 运作机制
22
231. 应用通过指定首选项持久化文件将其中的数据加载到`Preferences`实例,系统会通过静态容器将该实例存储在内存中,同一应用或进程中每个文件仅存在一个`Preferences`实例,直到应用主动从内存中移除该实例或者删除该首选项持久化文件。
242. 应用获取到首选项持久化文件对应的实例后,可以从`Preferences`实例中读取数据,或者将数据存入`Preferences`实例中。通过调用flush方法可以将`Preferences`实例中的数据回写到文件里。
25
26**图1** 首选项运作机制
27
28![zh-cn_image_0000001199139454](figures/zh-cn_image_0000001199139454.png)
29
30## 约束与限制
31
32- 因`Preferences`实例会加载到内存中,建议存储的数据不超过一万条,并注意及时清理不再使用的实例,以便减少非内存开销。
33- 数据中的`Key`为`string`类型,要求非空且字符长度不超过80个字节。
34- 当数据中的`Value`为`string`类型时,允许为空,字符长度不超过8192个字节。