SharePreference存储
主要用于轻量级数据的存储,Android中提供了三种用于得到SharePreference对象的方法:
1.Context类中的getSharePreference(String name, int mode)方法
- 第一个参数用于指定SharePreference文件的名称,如果文件不存在则会创建一个,SharePreference文件都是存放在/data/data/<package name>/shared_prefs/目录下。
- 第二个参数用于指定操作模式,主要有两种模式:MODE_PRIVATE和MODE_MULTI_PROCESS,前者是默认操作模式,和传入0效果是一样的,表示只有当前的应用才可以对这个文件进行读写操作;后者一般用于会有多个进程中对同一个SharePreference文件进行读写操作
2.Activity类中的getPreferences(int mode)方法
和上一方法类似,不过只接收一个操作模式参数,自动将当前活动的类名作为SharePreference的文件名
3.PreferenceManager类中的getDefaultSharePreference(this)方法
接收一个Context参数,自动使用当前应用程序的报名作为SharePreference文件名
注:数据保存类型为xml文件,默认以map形式存储,如:
<map>
<string name="name">David</string>
<int name="age">18</int>
</map>
数据操作模式:
- Activity.MODE_PRIVATE,//默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Activity.MODE_APPEND
- Activity.MODE_WORLD_READABLE,//表示当前文件可以被其他应用读取,
- Activity.MODE_WORLD_WRITEABLE,//表示当前文件可以被其他应用写入;
//如果希望文件被其他应用读和写,可以传入: - Activity.MODE_WORLD_READABLE | Activity.MODE_WORLD_WRITEABLE
- Activity.MODE_APPEND //该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
得到SharePreference对象后,开始存储数据:
- 调用SharePreference对象的edit()方法来获取一个SharePreference.Editor对象;
- 向SharePreference.Editor对象中添加数据,比如putString、putBoolean;
- 调用commit()方法提交数据,完成数据操作。
通过SharePreference对象存储数据:
/**
*editor定义可以单独或者是和SharePreference一同定义
*SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
*SharedPreferences pref =getSharedPreferences("myPref", MODE_PRIVATE);
*Editor editor = pref.edit();
**/
SharedPreferences.Editor editor= getSharedPreferences("share",MODE_PRIVATE).edit();
//SharedPreferences.Editor editor=getPreferences(MODE_PRIVATE).edit();
//SharedPreferences.Editor editor= PreferenceManager.getDefaultSharedPreferences(MainActivity.this).edit();
editor.putString("name","David");
editor.putInt("age",18);
editor.commit();
获取数据:
SharedPreferences sharedPreferences=getSharedPreferences("share",MODE_PRIVATE);
//两个参数对应需要提取的key和默认value,若key值为null或读取不到,则获取默认值,当读取值为""时,不视为null
String name=sharedPreferences.getString("name","admin");
int age=sharedPreferences.getInt("age",0);
String sex=sharedPreferences.getString("sex","男");
移除数据内容:
SharedPreferences.Editor editor=getSharedPreferences("share",MODE_PRIVATE).edit();
editor.remove("age");
editor.commit();
Editor方法:
Return | Public Methods |
---|---|
abstract void | apply()将编辑器中的首选项更改提交回正在编辑的SharedPreferences对象 |
abstract SharedPreferences.Editor | clear()在编辑器中标记以从首选项中删除所有值 |
abstract boolean | commit()将编辑器中的首选项更改提交回正在编辑的SharedPreferences对象 |
abstract SharedPreferences.Editor | putBoolean(String key, boolean value)Set a boolean value in the preferences editor, to be written back once commit() or apply()are called. |
abstract SharedPreferences.Editor | putFloat(String key, float value)Set a float value in the preferences editor, to be written back once commit() or apply() are called. |
abstract SharedPreferences.Editor | putInt(String key, int value)Set an int value in the preferences editor, to be written back once commit() or apply() are called. |
abstract SharedPreferences.Editor | putLong(String key, long value)Set a long value in the preferences editor, to be written back once commit() or apply() are called. |
abstract SharedPreferences.Editor | putString(String key, String value)Set a String value in the preferences editor, to be written back once commit() or apply() are called. |
abstract SharedPreferences.Editor | putStringSet(String key, Set<String> values)Set a set of String values in the preferences editor, to be written back once commit() is called. |
abstract SharedPreferences.Editor | remove(String key)在编辑器中标记应该删除优先级值,这将在调用commit()时在实际首选项中完成 |