为了解决App里存储的混乱而导致不必要的开发和维护成本,以及解决存储混乱导致的不能统一管理的问题,特此提供的统一的存储模块SHStorageManager,包括内存的缓存和磁盘存储,以module和key结合为维度进行存储,支持基本类型和引用类型。
目前, SHStorageManager的缓存采取 LruCache ,最大条数为10,可配置; 持久化存储采取SharedPreferences,不同module存储在不同文件。 SHStorageManager的好处在于:
-
统一管理app所有的存储,可以根据需要清除缓存
-
清除缓存时,可以清除所有存储,也可以指定清除指定module所有的存储;也可以清除指定module的指定key
-
使用方便,无需考虑存储的实现
SHStorageManager的使用
1、aar已上传Jcenter,只要如下gradle依赖即可
compile 'com.showjoy.android:storage:1.0.2'
2、首先在application的onCreate里调用init
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
SHStorageManager.init(this);
//SHStorageManager.init(this, MAX_SIZE);
}
}
3、存储数据,支持基本类型和引用类型
//存储内存缓存
SHStorageManager.putToCache("detail", "334332324", "{}");
SHStorageManager.putToCache("detail", "334332324", false);
SHStorageManager.putToCache("detail", "334332324", 12);
SHStorageManager.putToCache("detail", "334332324", 12f);
//存储到disk的数据,这里会先存到cache,再存储到disk
SHStorageManager.putToDisk("setting", "theme", 0);
SHStorageManager.putToDisk("detail", "334332324", false);
SHStorageManager.putToDisk("detail", "334332324", 12);
SHStorageManager.putToDisk("detail", "334332324", 12f);
4、获取数据
先从cache读取,再从disk读取。
从disk读出,会存储cache,以供下次更快读取
int theme = SHStorageManager.get("setting", "theme", 0);
boolean theme = SHStorageManager.get("setting", "themeBoolean", false);
String theme = SHStorageManager.get("setting", "themeString", "test");
5、清除缓存
//清除所有缓存
SHStorageManager.clearCache();
//清除指定模块的缓存
public static void clearCache(String module)
// public static void removeFromDisk(String module)
//清除指定模块的指定key
//public static void removeFromCache(String module, String key)
// public static void removeFromDisk(String module, String key)
代码在github上,欢迎大家提出宝贵意见