欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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());
}