Android开发 在Application用于初始化的工具类
Posted 观心静
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; } } }
以上是关于Android开发 在Application用于初始化的工具类的主要内容,如果未能解决你的问题,请参考以下文章