什么是SharePreferences
SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。
SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下。
为什么用SharePreferences
SharePreferences是用XML文件来实现的,那么我们为什么要用它的,为什么不直接用XML文件呢?好吧,可能不会有人问这个问题,我就自己回答自己吧。因为对XML操作比较繁琐,既然有封装好的类,我们为什么不去使用呢!我们要做到简化编程,提高效率,所以使用SharePreferences是一个很好的选择,比自己去操作XML文件要方便的多。
怎样使用SharePreferences
SharePreferences的使用是比较简单的,不然封装就显得没有意义了。首先我们需要生成一个SharePreferences的对象,但是我们不能直接new一个对象出来,所以我们用下面的方法来得到一个对象。
SharedPreferences mSharedPreferences = getSharedPreferences("student_data", Context.MODE_PRIVATE);
1. MODE_APPEND: 追加方式存储
2. MODE_PRIVATE: 私有方式存储,其他应用无法访问
3. MODE_WORLD_READABLE: 表示当前文件可以被其他应用读取
4. MODE_WORLD_WRITEABLE: 表示当前文件可以被其他应用写入
得到SharePreferences的对象之后,我们就需要往XML文件里添加数据,添加数据的时候我们需要一个Editor类来帮助我们操作XML文件,我们首先生成一个Editor对象:Editor mEditor = mSharedPreferences.edit();
mEditor.putString("name", mNameEdit.getText().toString());
mEditor.putString("age",mAgeEdit.getText().toString());
读取已经保存好的数据时,我们用SharePreferences对象来读取数据:
String _Name = mSharedPreferences.getString("name", "");
String _Age = mSharedPreferences.getString("age", "");
这样我们就可以得到已经保存好的数据,对getString方法,我们需要传两个参数,第一个是我们的“key”来获取我们保存的内容,第二个是如果我们传入的“key”不存在,然么就返回第二个参数的内容,不过我在这里把它传入空字符串罢了,我们可以根据自己的情况传入合适的内容。
下面我给出自己的一个测试用例,代码基本很简单:
MainActivity.java
public class MainActivity extends Activity implements OnClickListener{
private EditText mNameEdit,mAgeEdit;
private Button mSaveBtn,mShowBtn;
private SharedPreferences mSharedPreferences;
Editor mEditor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initVariable();
initListener();
}
private void initVariable() {
/**
* 实例化SharedPreferences对象
*/
mSharedPreferences = getSharedPreferences("student_data", Context.MODE_PRIVATE);
mEditor = mSharedPreferences.edit();
}
private void initListener() {
mSaveBtn.setOnClickListener(this);
mShowBtn.setOnClickListener(this);
}
private void initView() {
mNameEdit = (EditText) findViewById(R.id.et_name);
mAgeEdit = (EditText) findViewById(R.id.et_age);
mSaveBtn = (Button) findViewById(R.id.btn_save);
mShowBtn = (Button) findViewById(R.id.btn_show);
}
@Override
public void onClick(View v) {
if(v.getId()==R.id.btn_save){
save();
}else if(v.getId()==R.id.btn_show){
show();
}
}
private void show() {
String _Name = mSharedPreferences.getString("name", "");
String _Age = mSharedPreferences.getString("age", "");
mNameEdit.setText(_Name);
mAgeEdit.setText(_Age);
}
private void save(){
mEditor.putString("name", mNameEdit.getText().toString());
mEditor.putString("age",mAgeEdit.getText().toString());
mEditor.commit();
}
}