zoukankan      html  css  js  c++  java
  • Android开发 在Application用于初始化的工具类

    代码

    package cn.hawk.common.app;
    
    import android.app.Application;
    import android.os.Handler;
    import android.os.HandlerThread;
    import android.os.Looper;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    public class InitHelp {
        private static InitHelp sInitHelp;
        private Map<String, InitWork> mInitWorkList;
        private Handler mMainHandler = new Handler(Looper.getMainLooper());
        private Handler mChildHandler;
        private HandlerThread mChildHandlerThread = new HandlerThread("ChildInitHelp");
    
        private InitHelp(Map<String, InitWork> initWorkList) {
            mInitWorkList = initWorkList;
    
        }
    
        public void launch(Application application) {
            mChildHandlerThread.start();
            mChildHandler = new Handler(mChildHandlerThread.getLooper());
            Set<String> keySet = mInitWorkList.keySet();
            for (String key : keySet) {
                InitWork initWork = mInitWorkList.get(key);
                if (initWork.isMainThread) {
                    mMainHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            initWork.initWork(application);
                            initWork.onInitFinish();
                        }
                    });
    
                } else {
                    mChildHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            initWork.initWork(application);
                            initWork.onInitFinish();
                        }
                    });
                }
            }
        }
    
        /**
         * 查询初始化状态
         * @param key 查询的key
         * @return
         */
        public boolean inquiryInitStatus(String key){
            if (mInitWorkList.containsKey(key)) {
                return mInitWorkList.get(key).getInitStatus();
            }
            return false;
        }
    
        public static class Build {
            private Map<String, InitWork> mInitWorkList = new HashMap<>();
    
            /**
             * 添加初始化工作
             *
             * @param key          key
             * @param isMainThread 是否是主线程初始化
             * @param initWork     初始化工作
             * @return
             */
            public Build addInitWork(String key, boolean isMainThread, InitWork initWork) {
                initWork.setMainThread(isMainThread);
                mInitWorkList.put(key, initWork);
                return this;
            }
    
    
            public InitHelp build() {
                return new InitHelp(mInitWorkList);
            }
        }
    
    
        public static abstract class InitWork {
            private boolean initStatus = false;//初始化状态  true初始化完成 false未初始化
            private boolean isMainThread = true;
    
            private void setMainThread(boolean mainThread) {
                isMainThread = mainThread;
            }
    
            /**
             * 实现初始化工作
             */
            abstract void initWork(Application application);
    
            /**
             * 初始化完成
             */
            public void onInitFinish() {
                initStatus = true;
            }
    
            /**
             * 获取初始化状态
             *
             * @return
             */
            public boolean getInitStatus() {
                return initStatus;
            }
        }
    
    
    }
  • 相关阅读:
    django 静态文件模版上传下载配置
    drf ModelViewSet之匹配路由参数
    Django drf序列化外键关联表ID以为字段
    Django 自关联递归序列化模块 django-rest-frame-recursive模块
    Python利用Psycopg2模块将Excel表格数据导入Postgressql
    PyTorch中view的用法
    P1113 杂务 【拓扑排序】
    P3916 图的遍历 【反向建图+DFS】
    P2814 家谱【map型的并查集】
    P1102 A-B 数对【map】
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/14798847.html
Copyright © 2011-2022 走看看