Android SharedPreferences使用
程序员文章站
2022-05-16 17:26:16
...
1. 常规操作
1)保存简单变量
final SharedPreferences prefs = activity.getSharedPreferences(CACHE_NAME, 0); SharedPreferences.Editor spEditor = prefs.edit(); spEditor.putString(CACHED_STR_CONSTANT_NAME, cachedStr); spEditor.apply();
2)读取简单变量
String cacheStr = activity.getSharedPreferences(CACHE_NAME, 0) .getString(CACHED_STR_CONSTANT_NAME, null);
3)删除特定变量
final SharedPreferences prefs = activity.getSharedPreferences(CACHE_NAME, 0); SharedPreferences.Editor spEditor = prefs.edit(); spEditor.remove(CACHED_STR_CONSTANT_NAME); spEditor.apply();
4)清空所有变量
final SharedPreferences prefs = activity.getSharedPreferences(CACHE_NAME, 0); SharedPreferences.Editor spEditor = prefs.edit(); spEditor.clear(); spEditor.apply();
2. 复杂类型
可以考虑SQLite,但是如果数据量并不是很大可以考虑先转成json字符串,再存储;读取的时候再将该json串转化为对象。
比如要保留N个商品的信息
1)首先创建GoodsItem类:
public class GoodsItem { String goodsName; Float goodsPrice; //... }
2)然后创建用于json解析的class,包含所有数据的字段:
public class CachedGoodsItems { List<GoodsItem> goodsItems; //... }
3)存储(此处使用Gson将对象转换为json串,cachedGoodsItems为CachedGoodsItems 类型)
Gson gson = new Gson(); String cachedStr = gson.toJson(cachedGoodsItems); final SharedPreferences prefs = activity.getSharedPreferences(CACHE_NAME, 0); SharedPreferences.Editor spEditor = prefs.edit(); spEditor.putString(CACHED_STR_CONSTANT_NAME, cachedStr); spEditor.apply();
4)读取(此处使用Gson解析,cachedGoodsItems为CachedGoodsItems 类型)
String cacheStr = activity.getSharedPreferences(CACHE_NAME, 0) .getString(CACHED_STR_CONSTANT_NAME, null); if (cacheStr != null) { Gson gson = new Gson(); cachedGoodsItems = gson.fromJson(cacheStr, new TypeToken<CachedGoodsItems>() { }.getType()); }