SharePreferences 是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。只能在同一个包内使用,不能在不同的包之间使用,其实也就是说只能在创建它的应用中使用,其他应用无法使用。通过Context.getSharedPreferences方法获取SharedPreferences对象,参数分别为存储的文件名和存储模式。
操作。SharePreferences存储数据是通过获取Editor编辑器对象来操作的。
插入数据:调用Editor.putxxxx方法,两个参数分别为键和值。
获取数据:调用Editor.getxxxx方法,两个参数分别为键和不存在指定键时的默认值。
删除数据:调用Editor.remove方法,参数为指定的键。
清空所有数据:调用Editor.clear方法
上述所有方法调用都要执行Editor.commit方法来提交。
以下的代码实现一个简单的Demo:
package com.scxh.android1502.preference; import android.content.Context; import android.content.SharedPreferences; import com.scxh.android1502.bean.User; /** * 1.获取SharedPreferences对象 2.写入对象数据 3.读取对象数据 4.清空 * */ public class SharedPreferencesHelper { private static final String PREFERENCE_NAME = "PREFERENCE_USER_FILE_KEY"; private static final String ID = "ID"; private static final String NAME = "NAME"; private static final String PASSWORD = "PASSWORD"; private SharedPreferences mSharedPreferences; private static SharedPreferencesHelper PREFERENCE_HELPER = null; public static SharedPreferencesHelper getInstancePreferencesHelper(Context context) { if (PREFERENCE_HELPER == null) { PREFERENCE_HELPER = new SharedPreferencesHelper(context); } return PREFERENCE_HELPER; } private SharedPreferencesHelper(Context context) { mSharedPreferences = context.getSharedPreferences(PREFERENCE_NAME,Context.MODE_PRIVATE); } /** * 写入user对象数据 * @param user */ public void saveUserToPreferences(User user){ SharedPreferences.Editor editor = mSharedPreferences.edit(); editor.putInt(ID, user.getId()); editor.putString(NAME, user.getName()); editor.putString(PASSWORD, user.getPassWord()); editor.commit(); } /** * 读取user对象数据 * @return */ public User getUserFromPreferences(){ int id = mSharedPreferences.getInt(ID, 0); String name = mSharedPreferences.getString(NAME, ""); String passWord = mSharedPreferences.getString(PASSWORD, ""); User user = new User(); user.setId(id); user.setName(name); user.setPassWord(passWord); return user; } /** * 清空数据 */ public void clear(){ SharedPreferences.Editor editor = mSharedPreferences.edit(); editor.clear(); editor.commit(); } }
package com.scxh.android1502.preference; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import com.scxh.android1502.R; import com.scxh.android1502.bean.User; public class SharePreferenceActivity extends Activity { private EditText mUserNameEdit, mPassWordEdit; private Button mConfirmBtn; private static final String PREFERENCE_NAME = "com.scxh.android1502_PREFERENCE_USER_FILE_KEY"; private SharedPreferences mPreference; private SharedPreferencesHelper mSharedPreferencesHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_preference1_layout); mUserNameEdit = (EditText) findViewById(R.id.preference_name_edit); mPassWordEdit = (EditText) findViewById(R.id.preference_password_edit); mConfirmBtn = (Button) findViewById(R.id.preference_comfirm_btn); mSharedPreferencesHelper = SharedPreferencesHelper.getInstancePreferencesHelper(this); mConfirmBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String name = mUserNameEdit.getText().toString(); String passWord = mPassWordEdit.getText().toString(); User user = new User(); user.setName(name); user.setPassWord(passWord); mSharedPreferencesHelper.saveUserToPreferences(user); } }); User user = mSharedPreferencesHelper.getUserFromPreferences(); if(!user.getName().equals("")){ mUserNameEdit.setText(user.getName()); } if(!user.getPassWord().equals("")){ mPassWordEdit.setText(user.getName()); } } /** * 学习PreFerence简单使用 */ public void learnPrimaryPreference() { // 获取SharedPreferences对象 mPreference = getSharedPreferences(PREFERENCE_NAME, MODE_PRIVATE); mConfirmBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 写数据到sharepreference SharedPreferences.Editor editor = mPreference.edit(); editor.putString("USER_NAME", mUserNameEdit.getText() .toString()); editor.commit(); } }); // 从sharepreference读取数据 String value = mPreference.getString("USER_NAME", ""); if (!value.equals("")) { mUserNameEdit.setText(value); } } }