博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File 之 SharePreferences...
阅读量:6588 次
发布时间:2019-06-24

本文共 1746 字,大约阅读时间需要 5 分钟。

除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:

  一、根据Context获取SharedPreferences对象

  二、利用edit()方法获取Editor对象。

  三、通过Editor对象存储key-value键值对数据。

  四、通过commit()方法提交数据。

  具体实现代码如下:

1 public class MainActivity extends Activity {
2 @Override 3 public void onCreate(Bundle savedInstanceState) {
4 super.onCreate(savedInstanceState); 5 setContentView(R.layout.main); 6 7 //获取SharedPreferences对象 8 Context ctx = MainActivity.this; 9 SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE); 10 //存入数据 11 Editor editor = sp.edit(); 12 editor.putString("STRING_KEY", "string"); 13 editor.putInt("INT_KEY", 0); 14 editor.putBoolean("BOOLEAN_KEY", true); 15 editor.commit(); 16 17 //返回STRING_KEY的值 18 Log.d("SP", sp.getString("STRING_KEY", "none")); 19 //如果NOT_EXIST不存在,则返回值为"none" 20 Log.d("SP", sp.getString("NOT_EXIST", "none")); 21 } 22 }

   这段代码执行过后,即在/data/data/com.test/shared_prefs目录下生成了一个SP.xml文件,一个应用可以创建多个这样的xml文件。如图所示: 

   SP.xml文件的具体内容如下:

1 
2 3
string
4
5
6

  在程序代码中,通过getXXX方法,可以方便的获得对应Key的Value值,如果key值错误或者此key无对应value值,SharedPreferences提供了一个赋予默认值的机会,以此保证程序的健壮性。如下图运行结果中因为并无值为"NOT_EXIST"的Key,所以Log打印出的是其默认值:“none”。在访问一个不存在key值这个过程中,并无任何异常抛出。  

  SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。

转载地址:http://hhhno.baihongyu.com/

你可能感兴趣的文章
《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.3 直接映射高速缓存...
查看>>
《Adobe After Effects CS5经典教程》——1.5 对合成图像作动画处理
查看>>
《Web前端工程师修炼之道(原书第4版)》——移动Web
查看>>
阿里合伙人邵晓锋:什么是创业者应该抵制的诱惑?
查看>>
LastPass 的开源替代品
查看>>
如何用开源经历为你的简历增加光彩
查看>>
《Windows Server 2012 Hyper-V虚拟化管理实践》一3.3 远程管理Hyper-V主机
查看>>
《c++语言导学》——1.3 Hello,World!
查看>>
租用服务器怎么免去后顾之忧?
查看>>
阿里云服务器创建历史功能介绍 快速创建云服务器
查看>>
开源人工智能技术将改变一切
查看>>
送17届学弟学妹的礼物——学生包、学生优惠合集
查看>>
OpenBSD 现已支持 USB 3.0
查看>>
《CUDA C编程权威指南》——2.4节设备管理
查看>>
《Arduino开发实战指南:机器人卷》一2.2 模拟I/O口的操作函数
查看>>
红帽专家谈 Ceph 与 Gluster 开源存储路线
查看>>
2015 上半年 JavaScript 使用统计数据
查看>>
《PaaS程序设计》一1.2 云能为创新做什么
查看>>
《OpenGL ES 3.x游戏开发(上卷)》一2.4 文件I/O
查看>>
《写给程序员的数据挖掘实践指南》——5.2. 10折交叉验证的例子
查看>>