SharedPreferences数据存储笔记
好奇、学习、总结、分享
一、简介:
在实际开发中,类似于账号、密码保存、软件参数配置、播放进度值等比较简单的数据需要做持久化保存时,推荐使用SharedPerferences,SP是一种轻量级的数据存储方式,它以键值对的方式将数据存储进xml文件中。
SharedPreferences 可以用于数据的共享,包括应用程序之间,或者同一个应用程序中的不同组件。比如两个activity除了通过Intent传递数据之外,也可以通过ShreadPreferences来共享数据。
SharedPreferences只能保存简单类型的数据,例如int、boolean、float、long以及String类类型,如下所示。
二、SharedPreferences数据的四种操作模式
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
三、获取SharedPreferences的三种方式:
1 调用Context对象的getSharedPreferences()方法【常用】
2 调用Activity对象的getPreferences()方法
3 调用PreferenceManager类的getDefaultSharedPreferences()方法【不常用】
三种方式的区别:
1 调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
2 调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.
3 通过PreferenceManager【偏好管理器】获取的sharedPreference对象,会自动创建一个包名.类名_Preferences.xml文件。【不常用】
四、调用Context类的getSharedPreferences方法存储数据和读取数据的案例
1、sharedPreference保存数据
//1.通过Context获取sharedpreference对象
//参数1:xml文件名,不用写后缀名,系统会自动添加,参数2:文件模式[4种常用模式]
SharedPreferences sharedPreferences = context.getSharedPreferences("userinfo",Context.MODE_PRIVATE );
//2.通过sp中的方法获取Editor对象,用来向xml文件中写入数据
Editor edit = sharedPreferences.edit();
//3.往editor对象中存值,键值对
//参数1:代表是存放数据的 名称,参数2:代表存放数据的值
edit.putString("username", username);
edit.putString("password", password);
//4.提交editor对象,把上面写入的数据保存到xml文件中
//注意:commit方法相当于数据库事务中的提交(commit)操作。
edit.commit();
//提示保存成功
Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
安卓系统会自动在APP的安装目录下创建一个shared_prefs目录,并在该目录下创建userinfo.xml文件
【具体路径:data/data/com.leee.helloworld/shared_prefs/userinfo.xml】
2、sharedPreference读取数据:
//1.通过Context获取sharedpreference对象
//参数1:xml文件名,参数2:文件模式[4种常用模式]
SharedPreferences sharedPreferences = context.getSharedPreferences("userinfo", Context.MODE_PRIVATE);
//2.通过对象获取存放的内容
//参数1:要获取的key的名称,参数2:缺省值,如果sp中不存在这个key值,那么就用参数2的值作为返回指
String username = sharedPreferences.getString("username", "admin");
String password = sharedPreferences.getString("password", "admin");
//3.使用获取到的key的值。
本文是整理之前学习安卓过程中的笔记,方便自己巩固和加强记忆。本文也参考了其他优秀的文章,如下:
1、http://blog.csdn.net/zhang31jian/article/details/23258065
2、http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059133.html