Android SharedPreferences总结及优化
一、SharedPreferences简介
Android 中的 SharedPreferences(后续简称SP)是轻量级的数据存储方式,能够保存简单的数据类型,比如 String、int、boolean 值等。应用场合主要是数据比较少的配置信息。其内部是以 XML 结构保存在 /data/data/包名/shared_prefs 文件夹下,数据以键值对的形式保存。
使用Preference来存取数据,用到了SP接口和SP的一个内部接口SharedPreferences.Editor,这两个接口在android.content包中。
调用Context.getSharedPreferences(String name,int mode)方法得到SP接口。该方法的第一个参数是文件名称,第二个参数是操作模式。操作模式有三种:MODE_PRIVATE(私有)、MODE_WORLD_READABLE(可读)、MODE_WORLD_WRITEABLE(可写)。
SP提供了获得数据的方法,如getString(String key,String defValue)、getInt(String key,int defValue)等。调用SP的edit()方法返回SharedPreferences.Editor内部接口,该接口中提供了保存数据的方法,如putString(String key,String value),putInt(String key,int value)等,调用该接口的commit()方法可以将数据进行保存。
二、SP性能优化点
- SP文件没有被加载到内存时,调用getSharedPreferences方法会初始化文件并读入内存。
- 版本低于android_H或使用了MULTI_PROCESS标志时,每次调用getSharedPreferences方法时都会读入。
- Editor的commit方法,每次执行时同步写入磁盘。
- Editor的apply方法,每次执行时在单线程池中加入写入磁盘Task,异步写入。
三、SP优化的建议
1、尽量不要直接调用SharedPreferences进行读写操作。
public void saveUserId(){getSharedPreferences(fileName,mode).edit().putString(“user_id”,value);
}
if(sp.getUserId()>0){int id=sp.getUserId();...
}
五、其他程序访问本程序的配置数据方式
Context otherAppContext = createPackageContext("com.gary.appdisplaycontrol", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPreferences = otherAppContext.getSharedPreferences("preferences",Context.MODE_WORLD_READABLE|Context.MODE_MULTI_PROCESS);
Android SharedPreferences总结及优化相关推荐
- android SharedPreferences的使用优化
今天,简单讲讲android如何优化使用SharedPreferences保存数据. 之前,我写代码是都是每次缓存一个键值对就commit一次,后来在完成看了看,发现应该是缓存完所有键值对后,再一次性 ...
- ym——Android之ListView性能优化
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android之ListView性能优化 假设有看过我写过的15k面试题的朋友们一定知 ...
- 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 )
文章目录 一. 背景设置产生的过度绘制 二. Android 系统的渲染优化 1. 透明组件数据传递 2. GPU 存储机制 3. Android 7.0 之后的优化机制 三. 自定义布局渲染优化 一 ...
- android系统电量优化,基于Android系统网络耗电量优化方法的.pdf
基于Android系统网络耗电量优化方法的 2012年第10期,第 45卷 通 信 技 术 Vol.45,No.10,2012 总第250期 Communications Technology No. ...
- Android:Socket客户端开发,Android 的Socket客户端优化,Android非UI线程修改控件程序崩溃的问题
一.Android:Socket客户端开发 创建一个工程 我们要做的是按下按键之后,去往服务器 (服务器) 或者我们自己写的服务器 ,给他发送一些预定好的东西 然后打开操作界面 然后修改一下 你要发送 ...
- android SharedPreferences数据存储
android SharedPreferences数据存储 很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存 ...
- android sharedpre,Android SharedPreferences四种操作模式使用详解_Android_脚本之家
Android SharedPreferences详解 获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Ac ...
- android sharedpreferences工具类
今天,简单讲讲如何写一个sharedpreferences的工具类. 很简单,把一些重复的操作封装在工具类里,其他地方调用就可以.在网上搜索了比较多的资料,找到一个比较好的工具类. 参考文章:http ...
- android SharedPreferences保存list数据
今天,简单讲讲如何使用 SharedPreferences保存list数据. 网上找了很多资料,还是觉得这种比较简单.直接上代码: 保存: public static boolean saveA ...
最新文章
- 第二篇:智能电网(Smart Grid)中的数据工程与大数据案例分析
- 专业的秘密 | 南方医科大学生物信息学专业
- github打开出错
- Cocos2d-x3.0 不规则Button
- netty系列之:netty中各不同种类的channel详解
- 出国?上研?工作?回家种田?(二) 专业与上研相关问题
- map与unordered_map
- 工作308:控制change
- CSV Data Set Config设置
- cvc-complex-type.2.3: Element 'beans' cannot have character [children]
- 音视频开发之旅(41)-天空盒
- linux怎么做ppapi工具,如何在Linux上构建PPAPI插件?
- yarn启动vue项目
- 企业级用户画像: 价格敏感度模型-PSM
- html 搜索历史记录,使用cookie实现历史搜索记录功能
- WORD邮件合并打印EXCEL数据制作大量奖证、奖状、准考证、成绩单、明信片、信封等个人报表
- php人机验证,89.人机验证(一) |《TDD 构建 Laravel 论坛笔记》| Laravel China 社区...
- “8421码 5421码 2421码 余3码”区别
- MySQL的安装步骤详解
- 计算机网络域名解析,域名解析是什么意思?
热门文章
- 怎么形容智能冰激凌机器人_有关于形容描写冰激凌的句子及图片
- 【转】DICOM图像像素值、灰度值与CT值!!!!!
- Azure Table storage 基本用法 -- Azure Storage 之 Table
- 一步步编写操作系统 45 用c语言编写内核2
- fatal error lnk1120: 1 个无法解析的外部命令_3月1日七牛云存储割韭菜的应对方法...
- 算法 - 堆排序(大顶堆、小顶堆)
- Python3 爬虫学习笔记 C09【数据储存系列 — 文件储存】
- PWN-PRACTICE-BUUCTF-9
- 【PAT - 甲级1004】Counting Leaves (30分) (dfs,递归)
- 【2019牛客暑期多校训练营(第八场)- G】Gemstones(栈,模拟)