Sharedperferences数据存储是Android系统的一种数据存储方式,这里简单介绍下Android系统的数据存储方式,Android系统提供了4中数据存储方式:
- Sharedperferences :该存储方式适用于简单的数据保存,如配置属性,保存用户名等具有配置性质的数据存储,保存的数据是xml格式文件,通过键值对来获取和存储数据,不适合数据量较大的保存方式;
- 文件存储(File):文件存储方式是较常见的保存数据的方式,可以保存较大的数据,而且文件存储既能把数据保存在系统内存中,也能保存在SD卡中
- 数据库存储(SQLite): Android系统提供的SQLite轻量级数据库,完全支持SQL语句,数据库存储也能保存较大数据,可以保存在系统内存或者SD卡中,数据库存储可以保存具有一定规范的数据,非常高效,但是相应的需要数据库操作规范,相对前两者较复杂
- 网络存储(NetWork):通过网络将数据存储在服务器端,需要网络编程相关技能,一般适用于从服务器获取数据或者将本地用户信息上传到服务器端
接下来详细说明Sharedperferences的一些使用方法:
如前面介绍所说,Sharedperferences主要用于保存一些配置属性和保存用户名密码用于自动登录,其保存的数据是xml格式文件,文件路径为:/data/data/package name/shared_prefs
获取SharedPreferences的两种方式:
1 调用Context对象的getSharedPreferences()方法
2 调用Activity对象的getPreferences()方法
两种方式的区别:
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.
需要注意的是,Sharedperferences中数据的获取一般是在Activity中的onCreate()方法中,因为一般是在程序初始化的时候调用配置信息或者用户名和密码。
SharedPreferences的四种操作模式:
Context.MODE_PRIVATE : 值为 0
Context.MODE_APPEND : 值为 32768
Context.MODE_WORLD_READABLE : 值为 1
Context.MODE_WORLD_WRITEABLE : 值为 2
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.
下面总结Sharedperferences的使用流程:
获取Sharedperferences对象,如上所述的两种方式获取Sharedperferences对象,根据具体的情况使用,这里假设使用第一中方式获取,使用getSharedPreferences(String name,int mode);第一个参数是要获取的文件名称(不带后缀),第二个参数是操作模式,可以写名称常量,也可以直接写常量对应的值。
读取数据。调用getString(String key,String defValue)等方法获取键值对的内容,第二个参数是在没有找到对应的第一个参数的值时返回的值,即缺省值。
保存数据:创建Editor类的对象用于获取SharedPreferences对象的edit()方法,然后调用putString(String key,String value)方法存放数据,最后要记得执行Editor类的对象的commit()方法提交对数据的修改,否则修改是无效的
以上,Sharedperferences的相关概念和使用方法都总结了,接下来是实例代码:
main.xml是布局文件,这里的布局是一个简单的登录界面
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"