SharedPreference小结
来源:互联网 发布:佛山新能源汽车知豆 编辑:程序博客网 时间:2024/06/03 22:52
SharedPreference是Android中最简单的存储方式(当然安全性不高)。
以键值方式存储,每个KEY对应一个VALUE。
(一)SharedPreference的存在形式
SharedPreference以XML文件的形式存在。
存储目录为:data/data/APP Package Name/shared_prefs/
若文件存在,则使用,若不存在,则创建。
my.xml内容如下
<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map> <string name="name">BBB</string></map>
MainActivity.xml内容如下
<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map> <int name="age" value="17" /></map>
com.breakloop.sharedperferencedemo_preferences.xml内容如下
<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map> <boolean name="married" value="true" /></map>
注:当然,以上内容必须在ROOT下,才能看到。
(二)获取SharedPreference对象
有三种方式可以获取SharedPreference对象。
(1)从context中获取
getSharedPreferences(fileName, mode)
在默认目录下,创建名为fileName的XML文件,存储数据,文件操作模式为mode。
注:fileName不带后缀,android会自动使用.xml作为后缀。
(2)从Activity中获取
getPreferences(mode);
在默认目录下,创建以当前Activity为文件名的XML文件,存储数据,文件操作模式为mode。
(3)通过PreferenceManager的静态方法获取。
PreferenceManager.getDefaultSharedPreferences(this);
在默认目录下,创建以APP Package为文件名的XML文件,存储数据。文件操作模式为Context.MODE_PRIVATE。
注:由于Activity跟Context可相互转换,因此前两个方法可用直接在Activity中调用。
(三)SharedPreference的操作模式
SharedPreference有五种操作模式,但只有一种有效,一种无意义,其他三种已被放弃。
(1)Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容。
(2)Context.MODE_APPEND:为追加模式,在文件后添加数据。这对于SharedPreference无意义。因为SharedPreference与Map类似,一KEY一Value。若Key存在,则更新,不存在则添加。从这种方式上看,作用跟Context.MODE_PRIVATE雷同。
(3)Context.MODE_MULTI_PROCESS:表示当前文件可以被多进程同时操作,已在Android6.0中被放弃。
(4)Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取,已在Android4.2中被放弃。
(5)Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用修改,已在Android4.2中被放弃。
(四)如何向SharedPreference中存储数据
通过SharedPreferences.Editor对象向SharedPreference中存储数据。
可通过SharedPreference对象的editor()方法,获取SharedPreferences.Editor对象。
SharedPreferences m_SP1=getSharedPreferences("my", Context.MODE_APPEND);SharedPreferences m_SP2=getPreferences(Context.MODE_PRIVATE);SharedPreferences m_SP3=PreferenceManager.getDefaultSharedPreferences(this);SharedPreferences.Editor editor1=m_SP1.edit();SharedPreferences.Editor editor2=m_SP2.edit();SharedPreferences.Editor editor3=m_SP3.edit();
可以将SharedPreferences.Editor对象看做Map来使用。
但需要指出的是,在put数据后,需要调用apply()或commit(),来完成更新。
要么
SharedPreferences.Editor editor1=m_SP1.edit();editor1.putString("name","AAA");editor1.putString("name","BBB");editor1.apply();
要么
m_SP1.edit().putString("name","AAA").apply();m_SP1.edit().putString("name","BBB").apply();
决不能
m_SP1.edit().putString("name","AAA");m_SP1.edit().putString("name","BBB");m_SP1.edit().apply();
注:commit()与apply()的区别。前者将数据同步写入磁盘,并返回boolean型结果,表示是否成功,速度慢,保证精确度。后者将数据写入内容,而后异步写入磁盘,无返回结果,完成速度快,但不保证文件中的数据为操作写入数据。
(五)如何从SharedPreference中获取数据
获取数据时,直接使用SharedPreference对象即可,操作与Map相同。
以上是对SharedPreference的小结。SharedPreference可用于存储属性配置,session id,登录信息等。但明文的存在形式,使其安全性不高。且SharedPreference使用时被整体读入内存,若使用加密对数据进行保护,将大大降低其性能。因此,不建议使用SharedPreference存储敏感信息。
- SharedPreference小结
- 关于sharedpreference无法写入的错误小结
- Sharedpreference
- SharedPreference
- SharedPreference
- SharedPreference
- SharedPreference
- SharedPreference
- SharedPreference
- SharedPreference
- SharedPreference
- SharedPreference
- SharedPreference
- SharedPreference
- SharedPreference
- SharedPreference 用法
- android sharedPreference
- SharedPreference介绍
- Atitit 建设自己的财政体系 attilax总结 1.1. 收入理论2 1.2. 收入分类2 1.3. 2 1.4. 非货币收入2 1.5. 2 1.6. 降低期望2 1.7.
- React Native TextInput键盘遮挡输入款问题
- Hibernate中.hbm.xml文件的常用设置
- php的socket编程常用函数解析
- 安全的安装PuTTY 0.70
- SharedPreference小结
- 增强学习--策略梯度算法(Policy Gradient)
- 二分查找爬过的坑
- 我学MEF系列(1):MEF是什么
- HTML总结——1
- java内存区域与内存溢出异常
- 最好的在线Latex编辑器
- SQL可以正常用,但cmd启动不了mysql,报错[ERROR] unknown variable ;basedir=....问题
- 史上最全的架构师图谱