11## cacheKit
2- 一个简单易用的cache 库
2+ 一个简单易用的cache 库,此版本的cache 支持 ` 多实例模式 ` 和 ` 本地缓存过期模式 ` .
33
44### 特征
55 - 简单
66 - 实用
77 - 方便
8+ - 多实例
9+ - 缓存过期
810
911#### 使用Gradle构建时添加一下依赖即可:
1012```
11- implementation 'com.dvsnier:cacheLib :0.0.6 '
13+ implementation 'com.dvsnier:cache :0.2.0 '
1214```
1315
1416#### 使用前配置
@@ -31,30 +33,30 @@ implementation 'com.dvsnier:cacheLib:0.0.6'
3133 @Override
3234 public void onTerminate() {
3335 super.onTerminate();
34- CacheManager.getInstance().close ();
36+ CacheManager.getInstance().onDestroy ();
3537 }
3638
3739```
3840#### 扩展
39- ##### 第一种
41+ ##### 第一种,默认配置
4042```
41- // 在application的onCreate中初始化
43+ // 在application的onCreate中初始化
4244 @Override
4345 public void onCreate() {
4446 super.onCreate();
45- // 默认磁盘配置512M 缓存空间
47+ // 默认磁盘配置512M 缓存空间
4648 CacheManager.getInstance().initialize(this);
4749 ...
4850 }
4951```
50- ##### 第二种
52+ ##### 第二种,自定义配置
5153```
5254 // 在application的onCreate中初始化
5355 @Override
5456 public void onCreate() {
5557 super.onCreate();
56- // 自定义磁盘1G 缓存空间
57- int cacheMaxSizeOfDisk = 1024 * 1024 * 1024; // 1G
58+ // 自定义磁盘1G 缓存空间
59+ int cacheMaxSizeOfDisk = 1024 * 1024 * 1024; // 1G
5860 CacheManager.getInstance().initialize(new ICacheConfig.Builder(this).setCacheMaxSizeOfDisk(cacheMaxSizeOfDisk).create());
5961// CacheManager.getInstance().initialize(new ICacheConfig.Builder(this).setAppVersion(getAppVersionCode(this)).setCacheMaxSizeOfDisk(cacheMaxSizeOfDisk).create());
6062 ...
@@ -72,10 +74,162 @@ implementation 'com.dvsnier:cacheLib:0.0.6'
7274 return versionCode;
7375 }
7476```
75- #### FAQ
76- 1.默认缓存文件保存目录为: ` /mnt/sdcard/Android/data/package_your_name/cache/ `
7777
78+ #### 第三种,多实例配置
79+ ```
80+ // 在application的onCreate中初始化
81+ @Override
82+ public void onCreate() {
83+ super.onCreate();
84+ // 自定义磁盘1G 缓存空间
85+ int cacheMaxSizeOfDisk = Double.valueOf(CacheStorage.INSTANCE().getFormatted(1, AbstractStorage.SCU.G)).intValue(); // 1G < Integer.MAX_VALUE ~ 2G
86+ // the configure cache alias, here in the downloads directory
87+ CacheManager.getInstance().initialize(IType.TYPE_DOWNLOADS, new ICacheConfig.Builder(this)
88+ .setContext(this)
89+ .setAppVersion(getAppVersionCode(this))
90+ .setCacheMaxSizeOfDisk(cacheMaxSizeOfDisk)
91+ // .setUniqueName(IType.TYPE_DEFAULT)
92+ .setUniqueName(IType.TYPE_DOWNLOADS)
93+ .setDebug(true) // debug mode
94+ .create());
95+ ...
96+ }
97+
98+ public static int getAppVersionCode(Context context) {
99+ int versionCode = 1;
100+ PackageManager pm = context.getPackageManager();
101+ try {
102+ PackageInfo packInfo = pm.getPackageInfo(context.getPackageName(), 0);
103+ versionCode = packInfo.versionCode;
104+ } catch (NameNotFoundException e) {
105+ e.printStackTrace();
106+ }
107+ return versionCode;
108+ }
109+ ```
110+ #### 第四种,本地缓存过期模式配置
111+ ```
112+ // 在application的onCreate中初始化
113+ @Override
114+ public void onCreate() {
115+ super.onCreate();
116+ // 自定义磁盘1G 缓存空间
117+ int cacheMaxSizeOfDisk = Double.valueOf(CacheStorage.INSTANCE().getFormatted(1, AbstractStorage.SCU.G)).intValue(); // 1G < Integer.MAX_VALUE ~ 2G
118+ // the configure cache alias, here in the downloads directory
119+ CacheManager.getInstance().initialize(IType.TYPE_DOWNLOADS, new ICacheConfig.Builder(this)
120+ .setContext(this)
121+ .setAppVersion(getAppVersionCode(this))
122+ .setCacheMaxSizeOfDisk(cacheMaxSizeOfDisk)
123+ .setUniqueName(IType.TYPE_DOWNLOADS)
124+ .setCacheGenre(new CacheGenre.SCHEDULED()) // the Scheduled Mode, otherwise is default
125+ // .setDebug(true)
126+ // .setLevel(Level.VERBOSE)
127+ .create());
128+
129+ CacheManager.getInstance().setOnTransactionSessionChangeListener(IType.TYPE_DOWNLOADS, new OnTransactionSessionChangeListener() {
130+ @Override
131+ public void onTransactionSessionChange(@NonNull String alias, @NonNull String key, @Nullable Object value) {
132+ Log.i(Debug.TAG(), String.format("the current cache engine(%s), key(%s) - value(%s)", alias, key, value));
133+ }
134+ });
135+ ...
136+ }
137+
138+ public static int getAppVersionCode(Context context) {
139+ int versionCode = 1;
140+ PackageManager pm = context.getPackageManager();
141+ try {
142+ PackageInfo packInfo = pm.getPackageInfo(context.getPackageName(), 0);
143+ versionCode = packInfo.versionCode;
144+ } catch (NameNotFoundException e) {
145+ e.printStackTrace();
146+ }
147+ return versionCode;
148+ }
149+ ```
150+
151+
152+ #### 使用
153+ #### 1. 默认方式
154+ ```
155+ CacheManager.getInstance().put(key0, "测试数据: " + System.currentTimeMillis())
156+ .putString(key1, "测试字符串: " + view.toString())
157+ .putObject(key2, new Bean("cache object " + System.currentTimeMillis(), BuildConfig.VERSION_NAME))
158+ .putString(getKey(), view.toString())
159+ .commit();
160+ ```
161+ #### 2. 多实例方式
162+ ```
163+ CacheManager.getInstance().put(IType.TYPE_DOWNLOADS, getKey(), getValue())
164+ .commit(IType.TYPE_DOWNLOADS);
165+ ```
166+
167+ #### 3. 本地缓存过期方式
168+ ```
169+ CacheManager.getInstance().put(IType.TYPE_DOWNLOADS, getKey(), getValue())
170+ .put(IType.TYPE_DOWNLOADS, key1, getValue(), 30, TimeUnit.SECONDS)
171+ .put(IType.TYPE_DOWNLOADS, key2, getValue(), 1, TimeUnit.MINUTES)
172+ .put(IType.TYPE_DOWNLOADS, String.valueOf(System.currentTimeMillis()), getValue(), 3, TimeUnit.SECONDS)
173+ .commit(IType.TYPE_DOWNLOADS);
174+ ```
175+
176+ #### 4. 获取数据
177+ ```
178+ Object o0 = CacheManager.getInstance().get(key0);
179+ String o1 = CacheManager.getInstance().getString(key1);
180+ Object o2 = CacheManager.getInstance().getObject(key2);
181+
182+ Object O3 = CacheManager.getInstance().get(IType.TYPE_DOWNLOADS, key1);
183+ Object O4 = CacheManager.getInstance().get(IType.TYPE_DOWNLOADS, key2);
184+ ```
185+
186+ #### 5. 方法签名
187+
188+ 说明
189+ - ``` Y ``` :支持; ``` * ``` : 原则上支持;
190+
191+ | | 默认 | 多实例 | 缓存过期 | 说明 | 备注 | |
192+ | ---------------------------- | ---- | ------ | -------- | ---- | ---- | --- |
193+ | | | | | | | |
194+ | put(K,V) | Y | * | | | | |
195+ | putString(K,V) | Y | * | | | | |
196+ | putInputStream(K,V) | Y | * | | | | |
197+ | putObject(K,V) | Y | * | | | | |
198+ | | | | | | | |
199+ | get(K) | Y | * | | | | |
200+ | getString(K) | Y | * | | | | |
201+ | getInputStream(K) | Y | * | | | | |
202+ | getObject(K) | Y | * | | | | |
203+ | | | | | | | |
204+ | put(Type,K,V) | | Y | | | | |
205+ | putString(Type,K,V) | | Y | | | | |
206+ | putInputStream(Type,K,V) | | Y | | | | |
207+ | putObject(Type,K,V) | | Y | | | | |
208+ | | | | | | | |
209+ | get(Type,K) | | Y | | | | |
210+ | getString(Type,K) | | Y | | | | |
211+ | getInputStream(Type,K) | | Y | | | | |
212+ | getObject(Type,K) | | Y | | | | |
213+ | | | | | | | |
214+ | put(Type,K,V,D,U) | | Y | Y | | | |
215+ | putString(Type,K,V,D,U) | | Y | Y | | | |
216+ | putInputStream(Type,K,V,D,U) | | Y | Y | | | |
217+ | putObject(Type,K,V,D,U) | | Y | Y | | | |
218+ | | | | | | | |
219+ | get(Type,K) | | Y | Y | | | |
220+ | getString(Type,K) | | Y | Y | | | |
221+ | getInputStream(Type,K) | | Y | Y | | | |
222+ | getObject(Type,K) | | Y | Y | | | |
223+
224+
225+ #### FAQ
226+ 1 . 默认缓存文件保存目录为: ` /mnt/sdcard/Android/data/package_your_name/cache/ `
227+ 2 . 配置缓存(IType.TYPE_DOWNLOADS)文件保存目录为: ` /mnt/sdcard/Android/data/package_your_name/cache/downloads ` ,
228+ 如果配置不符合规范,则提供的默认配置为: ` /mnt/sdcard/Android/data/package_your_name/cache/local `
229+
230+ > - ``` 0.0.6 ``` 版本的Cache SDK 和``` 0.1.0 ``` 版本的Cache SDK 不兼容,如需简单使用缓存请使用``` 0.0.6 ``` ;
231+ > - 推荐``` 0.2.0 ``` ,本地缓存过期和持久化自由切换(冷切换),兼容``` 0.1.0 ``` 版本,不兼容``` 0.0.6 ``` 版本;
78232----
79233### 关于作者
80- * Email: < 3086722095 @qq.com>
234+ * Email: < dovsnier @qq.com>
81235* 有任何建议或者使用中遇到问题都可以给我发邮件,欢迎技术交流QQ:578562841
0 commit comments