• 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)
        //              }
        
    }
    View Code

    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,实现序列化,关于序列化可以参考这篇文章。

      序列化的作用如下

      

      什么情况下需要序列化?

      


    既然选择了,便不顾风雨兼程。Just follow yourself.
  • 相关阅读:
    More than 100 ABAP Interview Faq's
    SAP所有模块用户出口(User Exits)
    机器巡检基本知识
    SAP常用词汇
    ERP系统模块完全解析──工作中心
    abap基础
    topas命令详解
    企业如何处理制度、ISO质量体系与ERP系统的冲突
    在ALV表格中双击某一行记录后,显示明细记录
    Linux 命令修改图片尺寸!
  • 原文地址:https://www.cnblogs.com/Jason-Jan/p/7904480.html
Copyright © 2020-2023  润新知