文档章节

细讲Android系统下的Preference

亭子happy
 亭子happy
发布于 2017/01/13 22:35
字数 506
阅读 19
收藏 0

       Android系统下有一个存储轻量级数据的功能Preference,本质是Setting。Preference翻译过来是偏好,意思是可以通过Preference来根据不同的用户设置自己的偏好,也可以说设置应用或者系统的属性。

    Preference用起来方便简单,它主要用来存储应用中的键值对。它包括SharedPreference和PreferenceActivity相关的Preference类。PreferenceActivity相关的Preference类是用于写应用的设置界面,可以很方便的完成设置界面的编写。这篇主要讲它里面的SharedPreference。它的实现是隐藏的系统内部类SharedPreferenceImpl,而SharedPreference仅是接口。

    SharedPreferenceImpl在实现键值对存储和读取采用的是二级缓存的方式,首先用static的二级Map存储在内存中,然后以文件的方式存储在/data/data/shared_prefs中。它是以xml文件的形式来存储键值对的。

    内存中的二级Map是根据包名和文件名区分的,SharedPreference可以存储基本类型和Set的键值对。

    SharedPreference中键值对的读取是同步的,因为中内存中的静态map中读取。写入分为同步和异步之分。SharedPreference的读取是直接使用SharedPreference类下的方法,写入是使用SharedPreference类中的内部类Editor来实现的。Editor有很多put方法用来存储数据到内存,如果提交到本地文件中需要使用commit或者apply方法。其中,commit方法是同步方法,apply是异步方法。因为写入涉及io操作,所以commit会阻塞主线程,推荐使用apply异步的方式提交。

    建议SharedPreference文件尽量以文件名命名。在Activity中有getPreference方法来直接获取SharedPreference,它生成的文件以相关的Activity命名。

    获取SharedPreference还有一个参数来设置该文件的访问权限,现在的权限仅剩两个,一个是私有权限,一个是多进程权限。

© 著作权归作者所有

亭子happy
粉丝 120
博文 238
码字总数 46521
作品 0
海淀
程序员
私信 提问
Android中Preference的使用以及监听事件分析

在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局。当然,凡事都有例外,F...

chuiyuan
2014/07/18
100
0
android Preference 基础讲解

在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局。当然,凡事都有例外,F...

张林思密达
2015/11/19
44
0
自己定义的preference,怎么应用系统默认的属性

自己定义的preference,怎么应用系统默认的属性,比如字体,边距,求大神,有做过的吗,我尝试了很多方法,都 不行 我在补充详细点,就是我继承一个PreferenceActivity, 之后set 一个prefere...

天外野草
2013/11/13
185
0
自定义带有图片的PreferenceActivity

次和大家分享一下关于android中PreferenceActivity使用以及为配置信息文件中添加图标的功能,首先给大家看一下效果图: 大家可以看到这是最终的效果图,android提供了很大的空间供开发者可以...

我希冀着
2012/02/06
4.5K
26
android之Files,Saving State,Preferences(一)

保存简单的APP数据 1.Shared Preferences 是一个简单,轻量级的,以键值对的机制(name/value pair---NVP)存储一些基础数据(Boolean,string,float等),最常用在保存用户的APP参数。 2.保存...

Chanimalx
2013/01/27
493
0

没有更多内容

加载失败,请刷新页面

加载更多

前端面试题汇总

一. HTML常见的兼容性 1.HTML5 标签在低版本浏览器不兼容 解决办法:使用html5shiv库,引入下列语句 <!--[if lte IE 8]> <script src="https://cdn.bootcss.com/html5shiv/r29/html5.js"></sc......

蓝小驴
26分钟前
6
0
OSChina 周四乱弹 —— 我气的脸都黑了!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐《Red Battle》- 高橋李依 / 豊崎愛生 《Red Battle》- 高橋李依 / 豊崎愛生 手机党少年们想听歌,请使劲儿戳(这里) @丶Lion ...

小小编辑
39分钟前
469
20
找OSG教程, B站就有

https://www.bilibili.com/video/av64849038?from=search&seid=11632913960900279653

洛克人杰洛
今天
5
0
学习记录(day07-Vue组件、自定义属性、自定义事件)

[TOC] 1.1.1什么是组件 一个vue文件就是一个组件 组件将html标签/css样式/对应JS打包成一个整体,也可以理解钻进一个具有样式和特效的自定义标签。 一、编写组件(提供方)<template> <di...

庭前云落
今天
5
0
使用Prometheus监控SpringBoot应用

通过之前的文章我们使用Prometheus监控了应用服务器node_exporter,数据库mysqld_exporter,今天我们来监控一下你的应用。(本文以SpringBoot 2.1.9.RELEASE 作为监控目标) 编码 添加依赖 使...

JAVA日知录
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部