sharedPreference是以键值对(key-value)的形式进行存储的,它在应用中主要用来存储一些设置相关的信息参数。你可以使用SharedPreferences存储任何私有化的原始类型数据,包括booleans, floats, ints, longs, and strings,这些数据将会存储在用户区间,即使你的应用被杀掉。
获取SharedPreferences的两种方式:
1 调用Context对象的getSharedPreferences()方法
2 调用Activity对象的getPreferences()方法
使用getSharedPreferences()并结合第一个参数来获取应用程序中相对应的Preference;
使用getPreference()来获取Activity唯一的也是默认的一个Preference,当然默认的是不需要再使用名字参数来去获取。
两种方式的区别:
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.
SharedPreferences的四种操作模式:
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.
基本用法:
SharedPreferences preference = Context.getSharePreferences("存储的文件名称",Context.MODE_PRIVATE);
通过SharedPreferences.edit方法获得一个Editor对象。
通过SharedPreferences的Editor.putXXX()方法放置键值对到文件中。
最后调用commit方法保存文件。
通过SharedPreferences.getXXX()来进行读取。
注:只有事务结束后才能够提交(commit);
code snippet FYI:
进行存储和读取的类:
public class MysharedPreference {
private Context mContext;
public MysharedPreference(){
}
public MysharedPreference(Context context){
this.mContext = context;
}
public void saveMesage(String name,String pwd){
//mode有四种方式:私有,可读,可写,追加
SharedPreferences mPreferences = mContext.getSharedPreferences("存储文件的名称", Context.MODE_PRIVATE);
//对数据进行编辑
SharedPreferences.Editor mEditor = mPreferences.edit();
mEditor.putString("name", "userName");
mEditor.putString("pwd", "pwd");
boolean flag = mEditor.commit();
Toast.makeText(mContext, ""+flag, Toast.LENGTH_SHORT).show();
}
public Map<String, Object> getMessage(){
//这里为了凸显它键值对的形式,我将读取的数据放入到了map中
Map<String, Object> map = new HashMap<String, Object>();
//要进行读取只需要一下几部简单的操作
SharedPreferences mPreferences = mContext.getSharedPreferences("存储文件的名称", Context.MODE_PRIVATE);
String name = mPreferences.getString("name", "");
String pwd = mPreferences.getString("pwd", "");
map.put("name", name);
map.put(pwd, pwd);
return map;
}
}
在主界面进行操作(为了简单,这里没有进行代码编写上的规范,只是作为参考):
MysharedPreference mysharedPreference = new MysharedPreference(this);
mysharedPreference.saveMesage("name", "passWord");
Toast.makeText(this, mysharedPreference.getMessage().toString(), Toast.LENGTH_SHORT).show();
存储成功后会在该应用安装目录下一个特定的文件夹下能够找到这个以xml方式进行存储的文件