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通用类来记录信息的更多相关文章

  1. Android 意图通用类 IntentUrl

    1.整体分析 1.1.源代码如下,可以直接Copy. public class IntentUtil { /** * 打开链接 * 根据设置判断是用那种方式打开 * * @param context ...

  2. Android 网络通用类 NetUtil

    1.整体分析 1.1.源代码如下,可以直接Copy. public class NetUtil { /** * 用户是否连接网络 * * @param context Context */ publi ...

  3. Android AppUtil通用类

    1.整体分析 1.1.先看一下源码,可以直接Copy. public class AppUtil { /** * 获取当前程序包名 * * @param context 上下文 * @return 程 ...

  4. Android之使用MediaMetadataRetriever类获取媒体信息

    一.昨天.介绍了使用MediaMetadataRetriever类来获取视频第一帧:http://blog.csdn.net/u012561176/article/details/47858099,今 ...

  5. 关于Android的Build类——获取Android手机设备各种信息

    经常遇到要获取Android手机设备的相关信息,来进行业务的开发,比如经常会遇到要获取CPU的类型来进行so库的动态的下载.而这些都是在Android的Build类里面.相关信息如下: private ...

  6. Android 文件管理器通用类 FileUtil

    1.整体分析 1.1.源代码如下,可以直接Copy. public class FileUtil { private FileUtil() { } //****系统文件目录************** ...

  7. Android 常见工具类封装

    1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0' ...

  8. Lenovo k860i 移植Android 4.4 cm11进度记录【上篇已完结】

    2014.5.16 为了验证一下下载的CM11的源码有没有问题,决定编译一下cm官方支持的机器,手上正好有台nexus7 2012,就拿它为例测试一下在mac os x平台的整个编译过程. 1. 最开 ...

  9. NPOI MVC 模型导出Excel通用类

    通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...

随机推荐

  1. Android开发由eclipse转Android Studio中一些常见出错问题解决方法

    1.给一个Activity添加了一个Dialog主题,结果出现了下面的问题,在eclipse却没有出错 <activity android:name=".DialogActivity& ...

  2. C语言问题集

    征服C指针:P70#include "stdio.h" char *int_to_str(int int_value){ static char buf[20]; sprintf( ...

  3. php 编译安装指导

    php 编译安装 下载源码 安装 安装后配置 下载源码 php下载地址:http://php.net/downloads.php php-7.1.11.tar.bz2 安装 安装依赖包 yum ins ...

  4. SaaS “可配置”和“多租户”架构的几种技术实现方式

    1.数据存储方式的选择 多租户(Multi-Tenant ),即多个租户共用一个实例,租户的数据既有隔离又有共享,说到底是要解决数据存储的问题. 常用的数据存储方式有三种. 方案一:独立数据库   一 ...

  5. ansible使用7-Loops

    Standard Loops with_items - name: add several users user: name={{ item }} state=present groups=wheel ...

  6. HttpWebRequest Post请求webapi

    1.WebApi设置成Post请求在方法名加特性[HttpPost]或者方法名以Post开头如下截图: 2.使用(服务端要与客户端对应起来)[单一字符串方式]:注意:ContentType = &qu ...

  7. HCNA配置浮动静态路由

    1.拓扑图 2.配置IP R1 Please press enter to start cmd line! ############ <Huawei> Dec ::-: Huawei %% ...

  8. 什么是permit-inside功能

    若内网有一台服务器映射成为一个公网IP地址,并且将该公网IP注册至一个域名中.此时内网用户通过直接输入域名访问该服务器,域名服务器将该服务器的地址解析为已经注册的公网IP地址.默认情况下,当内网用户通 ...

  9. Git的使用(详细)

    一下内容引自网络 原帖:http://blog.jobbole.com/78960/ 原文出处: 涂根华的博客

  10. 不同编程语言在发生stackoverflow之前支持的调用栈最大嵌套层数

    今天我的一位同事在微信群里发了一张图片,勾起了我的好奇心:不同编程语言支持的函数递归调用的最大嵌套层数是? Java 1.8 private static void recur(int i){ Sys ...