Android中SharedPreferences的commit()与apply()的区别
1. commit()方法是同步的提交数据,立即写入到硬盘,耗时比较长;
2. apply()方法是异步的提交数据,不会立即写入到硬盘,耗时比较短;
3. commit()方法会返回一个boolean值,表示是否提交成功;
4. apply()方法不会返回任何值,表示提交成功;
5. 如果提交的数据比较多,建议使用apply()方法,因为它比较快;
6. 如果提交的数据比较少,建议使用commit()方法,因为它比较稳定。
存List数据
SharedPreferences sp2 = getActivity().getSharedPreferences("ABC", Activity.MODE_PRIVATE);
Gson gson = new Gson();
String data = gson.toJson(list);
SharedPreferences.Editor editor = sp2.edit();
editor.putString("list", data).commit();
取List数据
SharedPreferences sp = getSharedPreferences("ABC", Activity.MODE_PRIVATE);
List<Info> listJson = sp.getString("list", "");
Gson gson = new Gson();
quickGroupList = gson.fromJson(listJson, new TypeToken<List<Info>>() {}.getType()); //将json字符串转换成List集合
public void set(){
SharedPreferences sp = context.getSharedPreferences("Info", 0);
SharedPreferences.Editor ed = sp.edit();
Gson gson = new Gson();
String json = gson.toJson(list);
String json2 = gson.toJson(list2);
ed.putString("List", json);
ed.putString("List2", json2);
ed.apply();
}
publicvoid get(){
SharedPreferences sp = context.getSharedPreferences("Info", 0);
String jsonList = sp.getString("List", null);
String jsonList2 = sp.getString("List2", null);
Type type = new TypeToken<ArrayList<InfoBean>>(){}.getType();
Type type2 = new TypeToken<ArrayList<String>>(){}.getType();
Gson gson = new Gson();
List list = gson.fromJson(jsonList, type);
List list2 = gson.fromJson(jsonList2, type2);
}