Android Config通用类来记录信息
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,实现序列化,关于序列化可以参考这篇文章。
序列化的作用如下

什么情况下需要序列化?

Android Config通用类来记录信息的更多相关文章
- Android 意图通用类 IntentUrl
1.整体分析 1.1.源代码如下,可以直接Copy. public class IntentUtil { /** * 打开链接 * 根据设置判断是用那种方式打开 * * @param context ...
- Android 网络通用类 NetUtil
1.整体分析 1.1.源代码如下,可以直接Copy. public class NetUtil { /** * 用户是否连接网络 * * @param context Context */ publi ...
- Android AppUtil通用类
1.整体分析 1.1.先看一下源码,可以直接Copy. public class AppUtil { /** * 获取当前程序包名 * * @param context 上下文 * @return 程 ...
- Android之使用MediaMetadataRetriever类获取媒体信息
一.昨天.介绍了使用MediaMetadataRetriever类来获取视频第一帧:http://blog.csdn.net/u012561176/article/details/47858099,今 ...
- 关于Android的Build类——获取Android手机设备各种信息
经常遇到要获取Android手机设备的相关信息,来进行业务的开发,比如经常会遇到要获取CPU的类型来进行so库的动态的下载.而这些都是在Android的Build类里面.相关信息如下: private ...
- Android 文件管理器通用类 FileUtil
1.整体分析 1.1.源代码如下,可以直接Copy. public class FileUtil { private FileUtil() { } //****系统文件目录************** ...
- Android 常见工具类封装
1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0' ...
- Lenovo k860i 移植Android 4.4 cm11进度记录【上篇已完结】
2014.5.16 为了验证一下下载的CM11的源码有没有问题,决定编译一下cm官方支持的机器,手上正好有台nexus7 2012,就拿它为例测试一下在mac os x平台的整个编译过程. 1. 最开 ...
- NPOI MVC 模型导出Excel通用类
通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...
随机推荐
- RabbitMQ双向发送(接收端有返回RPC模式)
remote procedure call 服务端 import pika import time connection = pika.BlockingConnection(pika.Connecti ...
- --disable-column-names,--skip-column-names,--column-names=0
--disable-column-names,--skip-column-names,--column-names=0
- 理解python yield
python源代码中经常会有使用yield,带有yield的函数是generator(生成器),它返回是一个迭代值,下面我们分析yield是什么原理,有什么好处? 首先,我们写一个简单的斐波那契数列前 ...
- sql数据库常用操作
string connectionString = @"Data Source=(local)\sql2008r2;Initial Catalog=Movies;Uid=sa;Pwd=sql ...
- System Center Configuration Manager 2016 配置安装篇(Part1)
SCCM 2016 配置管理系列(Part 1- 4) 介绍AD01上配置了Active Directory域服务(ADDS),然后将Configuration Manager服务器(CM16)加入到 ...
- JAVA StringBuffer的用法
在使用StringBuffer 的时候,习惯性的像String一样把他初始化了 StringBuffer result = null; 结果警告:Null pointer access: The va ...
- STM32开发-MDK新建工程及配置
本人也是接触stm32没多久,之前用的MDK是5.1,现在用的是5.13,MDK5.0之前的版本(本人简称旧版)和之后的版本(本人简称新版)新建工程有很大区别.对于刚开始用学stm32的新手来说,基本 ...
- php session小节
1.为什么要用session? 在人们访问网站的时候,有很多个网页,由于http自身的特点,用户每执行一个脚本都需要和web服务器重新建立连接.由于他们之间是无状态的,这次的连接无法得到上次连接的状态 ...
- python web应用--WSGI接口(二)
WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求.我们来看一个最简单的Web版本的“Hello, web!”: 1 # server.py 2 # 从wsgiref模 ...
- layui table 用法
1.使用模板列 改变样式 获取嵌套数据{ field: '', width: '12%', title: '响应状态', sort: true, templet: function (d) { if ...