关于SharePrefenerces的使用

什么是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);

在上面的代码中,我们可以看到用Activity中的getSharePreferences方法可以得到一个对象。此方法需要传两个参数,一个String的参数,表示XML文件的名称,但是不要带后缀名".xml",这点一定要注意,另一个是文件的操作模式,上面的操作模式是:私有方式存储,其他应用无法访问,共有四种操作模式:

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生成的对象来得到Editor的一个对象,然后通过对Editor对象的操作来对XML文件进行添加数据,我们已经添加了两条数据了。

读取已经保存好的数据时,我们用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();
	}

}
时间: 2024-10-14 05:38:07

关于SharePrefenerces的使用的相关文章