Android Config通用类来记录信息
2024-08-23 20:27:21
1.整体分析
1.1.源代码,可以直接Copy。
public class Config {
private static int M = 1024 * 1024;
private volatile static Config mConfig;
private static LruCache<String, Object> mLruCache = new LruCache<>(1 * M); public Config(Context context){} public static Config init(Context context) {
if (null == mConfig) {
synchronized (Config.class) {
if (null == mConfig) {
mConfig = new Config(context);
}
}
}
return mConfig;
} public static Config getSingleInstance() {
return mConfig;
} //--- 基础 ----------------------------------------------------------------------------------- public <T extends Serializable> void saveData(@NonNull String key, @NonNull T value) {
mLruCache.put(key, value);
} public <T extends Serializable> T getData(@NonNull String key, @Nullable T defaultValue) {
T result = (T) mLruCache.get(key);
if (result != null) {
return result;
}
return defaultValue;
}
//--下面要看情况了,写一些要记录的信息
//--方式如:private static Key_something="something";
//--类型看情况,这里用string了。参数也看清况,这里用一个Integer吧
//---------- publlic String saveSomething(Integer position){
// savaData(something,position);
// }
//--然后是获取了,看情况传不传参,getData第二个参数是默认的,看情况
//-----------public Integer getSomething(){
// return getData(Key_something,0)
// } }
1.2.Config类的作用
就是一个记录用户信息的一个类。
比如某一页,用户看到了第几页第几个位置,可以通过这个方式存放到一个系统缓存中。
比如是否是第一次打开APP,都可以用这个方式存放到系统缓存中
而且这个类可以随意修改,看自己需要记录什么,只要按照例子写即可。
这是一个泛型,所以什么数据都支持。
2.局部分析
2.1.看一下定义了哪些成员变量
这里定义了一个M,数据量的大小,因为一般都是用M。1M=1024KB=1024*1024B
这里用了一个关键字volatile
然后LurCache是一个系统缓存类,相当于一个Map。
2.2.一个空的构造函数
这个可以为空,也可以和一些第三方提供的缓存类挂钩。
2.3.初始化函数
这里保证Config每次只能有一个实例,同时只能有一个线程执行,实现同步。
2.4.返回一个单例
返回一个单例,保证了唯一性。
2.5.保存数据和获取数据,泛型实现。
T 继承 Serializable,实现序列化,关于序列化可以参考这篇文章。
序列化的作用如下
什么情况下需要序列化?
最新文章
- VS2010中dll不可用问题
- JSPatch常见问题解答
- centos/redhat安装mysql
- 解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题
- DDMS中File Explorer无法查看data/data文件解决办法
- python书籍推荐
- Jenkins实现PHP的自动部署
- Ubuntu 16.04.3 LTS u盘-安裝教程(填坑)
- 使用lombok自动生成链式调用
- 你不知道的CSS单位
- ES6中的解构赋值
- redis的LRU算法(二)
- 第25月第18天 vue
- python3 互译无线短信接口
- (转)eclipse上传项目到码云
- 如何让FireFox/chrome新打开的标签页在后台打开,而不是立即跳转过去
- Nginx反向代理下IIS获取真实IP
- 使用 scm-manager 搭建 git/svn 代码管理仓库(二)
- 支付宝 iphone6 指纹验证失败
- python实现的、带GUI界面电影票房数据可视化程序