|
|
|
|
@ -5,39 +5,68 @@ import android.content.Context;
|
|
|
|
|
import android.content.SharedPreferences;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 本地缓存 因本缓存只缓存书库主页 所以使用SP有条件可以替换成别的
|
|
|
|
|
* 本地缓存类 ACache,用于在本地存储和获取一些数据。当前这个缓存主要是针对书库主页相关数据进行缓存操作,
|
|
|
|
|
* 由于其功能相对特定,所以暂时使用了 Android 系统提供的 SharedPreferences(简称 SP)来实现缓存功能。
|
|
|
|
|
* 备注里提到如果有条件的话,可以替换成其他更合适的缓存机制,比如数据库缓存或者其他第三方缓存库等,具体取决于业务需求和性能等方面的考量。
|
|
|
|
|
*/
|
|
|
|
|
public class ACache {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用于存储 SharedPreferences 实例,SharedPreferences 是 Android 中一种轻量级的数据存储方式,
|
|
|
|
|
* 可以方便地以键值对的形式存储和读取简单的数据类型(如字符串、整型、布尔型等),在这里它将作为缓存数据的存储容器,
|
|
|
|
|
* 通过它来实现对书库主页相关数据的持久化存储以及后续的读取操作。
|
|
|
|
|
*/
|
|
|
|
|
private SharedPreferences preference;
|
|
|
|
|
private ACache(Context ctx){
|
|
|
|
|
preference = ctx.getSharedPreferences("ACache",0);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 私有构造函数,用于创建 ACache 类的实例对象,它接收一个 Context 类型的参数,通过这个 Context 获取应用的 SharedPreferences 对象,
|
|
|
|
|
* 并且指定了 SharedPreferences 的名称为 "ACache",操作模式为 0(对应 MODE_PRIVATE,表示只有当前应用可以访问该 SharedPreferences 文件)。
|
|
|
|
|
* 采用私有构造函数的设计模式可以控制类的实例化过程,保证缓存对象的创建符合特定规则并且在合适的上下文中进行。
|
|
|
|
|
* @param ctx Android 的 Context 对象,用于获取应用的相关资源以及操作应用级别的功能,在这里用于获取 SharedPreferences。
|
|
|
|
|
*/
|
|
|
|
|
private ACache(Context ctx) {
|
|
|
|
|
preference = ctx.getSharedPreferences("ACache", 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 静态工厂方法,用于获取 ACache 类的实例对象,外部代码通过调用这个方法并传入 Context 参数来获取一个 ACache 实例,
|
|
|
|
|
* 这样的设计模式使得获取缓存实例的过程更加清晰、方便,并且符合单一职责原则,将对象的创建和使用分离开来。
|
|
|
|
|
* @param ctx Android 的 Context 对象,用于创建对应的 ACache 实例,以便在正确的应用上下文中操作缓存。
|
|
|
|
|
* @return 返回一个 ACache 实例对象,通过该对象可以进行缓存数据的读写等操作。
|
|
|
|
|
*/
|
|
|
|
|
public static ACache get(Context ctx) {
|
|
|
|
|
return new ACache(ctx);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用于向缓存中写入数据,将指定的键(key)和对应的值(value,这里限定为字符串类型)存储到 SharedPreferences 中,
|
|
|
|
|
* 它首先获取 SharedPreferences 的编辑器(Editor)对象,通过编辑器来设置要存储的键值对,然后提交更改,使得数据真正写入到存储中。
|
|
|
|
|
* 如果在操作过程中出现异常(比如存储空间不足等情况),则会捕获异常并进行简单处理(当前代码只是捕获异常但不做额外操作,可根据实际需求完善异常处理逻辑)。
|
|
|
|
|
* @param key 用于标识存储数据的键,是一个字符串类型,需要保证其唯一性,以便后续准确地通过该键来获取对应的数据,通常根据缓存数据的业务含义来定义合适的键名。
|
|
|
|
|
* @param value 要存储的字符串类型的值,即需要缓存的具体数据内容,可以是书库主页相关的各种文本数据,比如页面配置信息、缓存的部分 HTML 内容等。
|
|
|
|
|
*/
|
|
|
|
|
public void put(String key, String value) {
|
|
|
|
|
try{
|
|
|
|
|
try {
|
|
|
|
|
SharedPreferences.Editor editor = preference.edit();
|
|
|
|
|
editor.putString(key, value);
|
|
|
|
|
editor.commit();
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 读取 String数据
|
|
|
|
|
*
|
|
|
|
|
* @param key
|
|
|
|
|
* @return String 数据
|
|
|
|
|
* 读取缓存中存储的字符串类型数据的方法,根据传入的键(key)从 SharedPreferences 中查找对应的字符串值并返回。
|
|
|
|
|
* 如果在读取过程中出现异常(比如键不存在、存储文件损坏等情况),则会捕获异常并返回 null,表示读取失败,
|
|
|
|
|
* 这样调用者可以根据返回值来判断是否成功获取到了期望的数据,进而进行相应的业务逻辑处理。
|
|
|
|
|
* @param key 用于查找数据的键,是一个字符串类型,需要与之前存储数据时使用的键保持一致,以便准确获取对应的缓存数据。
|
|
|
|
|
* @return 返回从缓存中读取到的字符串类型的数据,如果读取失败(出现异常情况)则返回 null。
|
|
|
|
|
*/
|
|
|
|
|
public String getAsString(String key) {
|
|
|
|
|
try{
|
|
|
|
|
return preference.getString(key,null);
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
try {
|
|
|
|
|
return preference.getString(key, null);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|