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;
            }
        }
    
    
    }
  • 相关阅读:
    ch_5102 Mobile Service
    ch_POJ1201 Intervals
    [CodeVs]谁是赢家
    树上莫队
    [NOI2009]管道区珠
    拉格朗日差值
    Simpson&自适应Simpson
    数论学习笔记
    hibernate FetchType理解
    Hibernate的generator属性之意义
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/14798847.html
Copyright © 2011-2022 走看看