概述
SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据。SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。
使用步骤
A、存放数据信息
SharedPreferences 存数据的方式是以xml文件的格式存在,xml文件已键值对的方式存取数据使用:
/*
* 通过getSharedPreferences方法获取/或者创建某一shared_prefs文件
* 1、获取SharedPreferences对象
* 第一个参数指定要打开的shared_pref文件,如果没有则会创建
* 第二个参数指定创建的shared_pref文件的访问权限
*/
SharedPreferences sp = getSharedPreferences("my_pref", Context.MODE_PRIVATE);
// 2、获取Editor对象,才能想Shared中写入数据
Editor editor = sp.edit();
// 3、通过editor.put的方法可以往shared中写入数据
editor.putString("isLogged", "true");
// 4、editor需要调用commit才将数据写入
editor.commit();
B、读取数据信息
//1、获取Preferences
SharedPreferences sp = getSharedPreferences("my_pref", Context.MODE_PRIVATE);
//2、取出数据
String content = sp.getString("isLogged", "initial value has not been initialized");
Toast.makeText(this, "content is " + content, Toast.LENGTH_SHORT).show();
以上就是Android中SharedPreferences的使用方法,其中创建的Preferences文件存放位置可以在Eclipse中查看:
DDMS->File Explorer //shared_prefs/setting.xml
getSharedPreferences和getDefaultSharedPreferences用法差别
SharedPreferences文件存储共享变量的文件路径位于“/data/data/应用程序包/shared_prefs/”目录下
首先从调用层次上来分:
1. getPreferences(int mode)是由Activity来调用的。
2. getSharedPreferences(String name,int mode)由Context调用。
3. getDefaultSharesPreferences(Context context)是PreferenceManager的静态方法
从文件命名来说:
1. getPreferences(int mode)不需要传递文件名,默认使用不带包名的类名作为文件名(即Activity Java文件名,不带后缀)。
2. getSharedPreferences(String name,int mode)需要提供文件名,当然是以提供的name作为文件名。
3. getDefaultSharedPreferences(Context context)也不需要提供文件名,默认使用包名作为文件名。
一些博客说getPreferences(int mode)创建的SharedPreferences文件只能在当前的Activity进行访问,其实可以在其他的Activity也可以访问,这时我们需要使用getSharedPreferences(String name,int mode),name为之前的Activity Java类的名称(不带后缀)
对SharePreference的简单封装
public class PrefUtils {
public static void putBoolean(String key, boolean value, Context ctx) {
SharedPreferences sp = ctx.getSharedPreferences("config",
Context.MODE_PRIVATE);
sp.edit().putBoolean(key, value).commit();
}
public static boolean getBoolean(String key, boolean defValue, Context ctx) {
SharedPreferences sp = ctx.getSharedPreferences("config",
Context.MODE_PRIVATE);
return sp.getBoolean(key, defValue);
}
public static void putString(String key, String value, Context ctx) {
SharedPreferences sp = ctx.getSharedPreferences("config",
Context.MODE_PRIVATE);
sp.edit().putString(key, value).commit();
}
public static String getString(String key, String defValue, Context ctx) {
SharedPreferences sp = ctx.getSharedPreferences("config",
Context.MODE_PRIVATE);
return sp.getString(key, defValue);
}
public static void putInt(String key, int value, Context ctx) {
SharedPreferences sp = ctx.getSharedPreferences("config",
Context.MODE_PRIVATE);
sp.edit().putInt(key, value).commit();
}
public static int getInt(String key, int defValue, Context ctx) {
SharedPreferences sp = ctx.getSharedPreferences("config",
Context.MODE_PRIVATE);
return sp.getInt(key, defValue);
}
public static void remove(String key, Context ctx) {
SharedPreferences sp = ctx.getSharedPreferences("config",
Context.MODE_PRIVATE);
sp.edit().remove(key).commit();
}
}