相比于文件的存储方式,SharedPreference是使用键值对的方式来存储数据的。本质为xml文件的形式存储,适合存放程序的配置信息。
SharedPreference仅支持以下数据类型:
boolean
int
float
long
String
SharedPreference的实现如下
一、获取SharedPreference对象
1、Context中的getSharedPreference()方法
getSharedPreference(“文件名”,操作模式)
指定的文件若不存在则会创建一个,文件都是存放在/data/data/shared_prefs/目录下。
主要操作模式:
MODE_PRIVATE 默认模式,表示只有当前应用程序才可以对SharedPreference进行读写。
MODE_MULTI_PROCESS 一般用于多个进程中对同一个SharedPreference进行读写。
MODE_WORLD_READABLE,MODE_WOELD_WRITEABLE模式在android4.2版本已被废弃。
2、Activity类中的getPreference()方法
getPreference(操作模式)
只接受一个参数操作模式,文件名默认为当前Activity类名。
3、PreferenceManager类中的getDefaultSharedPreference()方法
getDefaultSharedPreference(Context)
此方法为一个静态方法,接受一个Context参数,使用当前应用程序的包名为前缀来命名文件。
二、读写数据
写数据
1、通过以上3种方法获取到SharedPreference对象后,调用edit()方法得到一个SharedPreference.Editor对象。
2、调用SharedPreference.Editor对象的一系列put方法(例如putString)来存储数据。
3、最后通过commit()方法(提交成功返回true,否则返回false)来提交数据,从而完成数据的存储。
读数据
4、通过SharedPreference对象的一系列get方法(例如getBoolean)来获取数据。
简单demo如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取SharedPreferences对象
SharedPreferences spf=getSharedPreferences("data", MODE_PRIVATE);
//获取SharedPreference.Editor对象
SharedPreferences.Editor editor=spf.edit();
//读取数据
boolean isMan=spf.getBoolean("isMan", false);
int salary=spf.getInt("salary", 3000);
String name=spf.getString("name", "Tom");
//存储数据
editor.putBoolean("isMan", true);
editor.putInt("salary", 6000);
editor.putString("name", "jack");
//提交
editor.commit();
}
总结:记住3种获取SharedPreference对象的方式,各方式的文件名与操作模式。获取数据直接get,存储需要SharedPreference.Editor对象直接put,最后别忘了commit提交。