龙腾四海非一日之功
一、SharedPreferences
1、用于保存数据,一般数据为系统配置信息;
2、是以键值对的形式存储到data/data/package-name/shared_prefs/l目录的XML文件中。
3、获取SharedPreferences实例的方式有三种:
/*第一种 -- SharedPreferences的文件名是当前类名*/
SharedPreferences sp1 = getPreferences(Context.MODE_PRIVATE);
/*第二种 -- SharedPreferences的文件名使用包名+_preferences 模式为Context.MODE_PRIVATE*/
SharedPreferences sp2 = PreferenceManager.getDefaultSharedPreferences(this);
/*第三种 -- SharedPreferences的文件名自己定*/
SharedPreferences sp3 = getSharedPreferences("自定义文件名称", MODE_PRIVATE);
4、通过SharedPreferences 存储数据:
SharedPreferences sp = getSharedPreferences("mySharedPreferences", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("boolean", true);
editor.putFloat("float", 12.3f);
editor.putInt("int", 12);
editor.putLong("long", 123L);
editor.putString("string", "string");
Set<String> set = new HashSet<>();
set.add("set");
editor.putStringSet("set", set);
//editor.apply(); ------ ①
// editor.commit(); ------ ②
以上就是SharedPreferences 所能存储的所有数据类型;通过上面的代码我们可以看到SharedPreferences 的键只能是String类型的。存储完数据后使用①或②的方式提交;两者之间的区别是:① 没有返回值,用户不能知道是否保存成功,但是效率高,提交后先把数据保存到内存中,然后通过异步的方式保存到硬盘中。②返回boolean类型的值,用户可以知道是否保存成功,但是效率低,通过同步的方式保存到硬盘中。
五、获取SharedPreferences 中保存的数据
SharedPreferences sp = getSharedPreferences("SharedPreferences", MODE_PRIVATE);
String strValue = sp.getString("string", "");
int intValue = sp.getInt("int", -1);
Set<String> setValue = sp.getStringSet("set", null);
..........
当获取SharedPreferences中的值时,一定要指定清楚要获取那个xml文件中的数据;在获取值的方法getXxxxx(String, default)中第一个参数是所获取的值的键名,第二个参数是缺省值(当指定的键不存在时,返回的数据)。