Android 保存用户偏好设置

时间:2022-05-14 05:33:40

很多情况下都允许用户根据自己的习惯和爱好去设置软件,而我们需要保存这些设置,可以用一个专业保存用户偏好的类:SharedPreferences。

这个类是实现方法其实也就是创建和修改 XML 文件, 所以当使用这个类保存了偏好设置,会在 /data/data/<package name>/shared_prefs 下创建一个 XML 文件。

调用上下文的静态方法 getSharedPreferences 获取 SharedPreferences 的实例化对象。getSharedPreferences  方法有2个参数,一个是文件名,一个是访问文件的模式。当然这个方法也是 Activity 的方法,如果调用 Activity 的 getSharedPreferences   方法,那么它只有一个参数,也就是访问文件的模式,文件名不用指定是因为它会默认使用继承 Activity 类的类名。

保存偏好设置时,要通过 SharedPreferences 对象得到一个 Editor 对象,用这个对象来操作。

由于这个类使用非常方便,还是直接贴代码,非常直观。

我写的 PrefsHelper 类:

public class PrefsHelper {
	private Context context;
	
	public PrefsHelper(Context context) {
		this.context = context;
	}
	
	public boolean save(Map<String, String> settings, String fileName) {
		SharedPreferences sp = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
		Editor editor = sp.edit();
		for (String strKey : settings.keySet()) {
			editor.putString(strKey, settings.get(strKey));
		}
		return editor.commit();
	}
	
	@SuppressWarnings("unchecked")
	public Map<String, String> read(String fileName) {
		Map<String, String> settings = new HashMap<String, String>();
		SharedPreferences sp = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
		settings = (Map<String, String>) sp.getAll();
		return settings;
	}
}