Android SharedPreferences总结及优化
来源:互联网 发布:招商银行外汇行情软件 编辑:程序博客网 时间:2024/05/18 09:43
一、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,异步写入。
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 学习总结
- Android入门--SharedPreferences使用总结
- Android中SharedPreferences的总结
- Android-SharedPreferences简介及使用
- android有关SharedPreferences的使用方法及注意事项
- Android SharedPreferences用法及程序共享机制
- Android SharedPreferences用法及注意点详解
- Android数据存储---SharedPreferences详解及应用
- Android Fragment及Activity 中使用sharedpreferences
- android SharedPreferences 读写 及 工具类介绍
- SharedPreferences总结
- SharedPreferences总结
- SharedPreferences总结
- Spark优化及总结
- Spark优化及总结
- Spark优化及总结
- Spring 配置自动扫描原理说明
- iOS打包SDK生成Framework
- Thinkpad蓝牙键盘驱动安装和常见问题
- 庞加莱猜想的证明过程
- java指数计数
- Android SharedPreferences总结及优化
- python引入时间模块,并输出当前时间
- Mapping返回值map
- 为什么中国的程序员总被称为码农?
- golang 的 context.Context
- IOCP原理
- JDK源码解读 HashSet
- 广搜(初见)
- linux中安装zookeeper