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;
            }
        }
    
    
    }
  • 相关阅读:
    韦达定理
    矩阵特征值
    正交矩阵
    积分中值定理
    行列式的计算
    希尔伯特矩阵(Hilbert matrix)
    python 基于detectron或mask_rcnn的mask遮罩区域进行图片截取
    python cv2截取不规则区域图片
    python cv2读取rtsp实时码流按时生成连续视频文件
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/14798847.html
Copyright © 2011-2022 走看看