美文网首页
启动优化框架 一句话处理 统一管理

启动优化框架 一句话处理 统一管理

作者: misLiu | 来源:发表于2020-11-18 10:32 被阅读0次

    GitHub - DogMis/LxStart_time: 启动优化一句话处理

    主要是项目需要,我理解的启动优化就是把所有第三方管理起来,除了必须初始化使用的,剩下的就是子线程,其他进程,还有需要时候调用。我做的这个主要是 用于管理并且可以切换线程。

    我的思路是先有一个类 来放所有的 准备初始化的第三方或者 其他需要初始化的数据

    所有调用类

    然后我需要有两个参数 来判断是否在主进程 或者是子线程运行,一个排序,用来运行时进行先后顺序的运行。我又额外加了一个跳出还没想到什么时候处理

    标示线程和优先级

    后续我需要通过标示来获取所有的分类好的初始化调用方法,依次调用

    分装任务 子线程运行 主线成运行

    最后看一下成果 

    app一个初始化

    需要初始化的地方打上标示

    就ok了

    github地址:https://github.com/DogMis/LxStart_time

    使用方法

    这个框架主要是用来管理第三方,和其他的数据初始化进行管理,从而对启动进行一定的优化 使用方法 : implementation 'com.github.DogMis:LxStart_time:1.0'

    在Application中添加 一个接口约束 和一个实现类 AppInitTask.init(this,Sdk.class,InitAPPManger.class); 在接口约束类中进行初始化的方法添加 @ModelLoadin(grade = 99, thredid = ThreadId.MAIN_THREAD_ID,Jumpout=false)

      grade 数值越大 优先级越高

      thredid 运行线程

      ThreadId.MAIN_THREAD_ID 主线成启动

        ThreadId.THREAD_ID 子线程启动

        Jumpout 在某个方法执行以后 调用运行其他方法

        如下

        public interface Sdk<T> {

          @ModelLoadin(grade = AppInitC.StartGrade.MAX, thredid = ThreadId.MAIN_THREAD_ID)

            T InitAppData();

          @ModelLoadin(grade = AppInitC.StartGrade.LIULISHUO, thredid =ThreadId.THREAD_ID)

          T LiuLishuosdk();

        @ModelLoadin(grade = AppInitC.StartGrade.FACE_BOOK, thredid = ThreadId.THREAD_ID)

          T Facebook();

      }

        public static Handler getHandler() {

        return mHandler;

    }

    //实现类 public class InitAPPManger implements Sdk {

    public static Handler getHandler() {

        return mHandler;

    }

    private static Handler mHandler;//主线程Handler

    Application context;

    @Override

    public InitAPPManger InitAppData() {

        context = AppInitTask.getApplication();

        mHandler = new Handler();

        ContextUtils.getInstance().setContext(context);

        return this;

    }

    @Override

    public InitAPPManger LiuLishuosdk() {

        FileDownloader.init(context);

        return this;

    }

    @Override

    public InitAPPManger Facebook() {

        ImagePipelineConfig imagePipelineConfig = ImagePipelineConfig.newBuilder(context)

                .setDownsampleEnabled(true)

                .build();

        Fresco.initialize(context, imagePipelineConfig);

        return this;

    }

    }

        或者 直接使用实现类

        AppInitTask.init(this,InitAPPManger.class);

        在实现类中,进行初始化的方法添加    @ModelLoadin(grade = 99, thredid = ThreadId.MAIN_THREAD_ID,Jumpout=false)

      //实现类

    public class InitAPPManger  {

    public static Handler getHandler() {

        return mHandler;

    }

    private static Handler mHandler;//主线程Handler

    Application context;

    @ModelLoadin(grade = 99, thredid = ThreadId.MAIN_THREAD_ID,Jumpout=false)

    public InitAPPManger InitAppData() {

        context = AppInitTask.getApplication();

        mHandler = new Handler();

        ContextUtils.getInstance().setContext(context);

        return this;

    }

    @ModelLoadin(grade = 98, thredid = ThreadId.MAIN_THREAD_ID,Jumpout=false)

    public InitAPPManger LiuLishuosdk() {

        FileDownloader.init(context);

        return this;

    }

    @ModelLoadin(grade = 97, thredid = ThreadId.MAIN_THREAD_ID,Jumpout=false)

    public InitAPPManger Facebook() {

        ImagePipelineConfig imagePipelineConfig = ImagePipelineConfig.newBuilder(context)

                .setDownsampleEnabled(true)

                .build();

        Fresco.initialize(context, imagePipelineConfig);

        return this;

    }

    }

    结束

    相关文章

      网友评论

          本文标题:启动优化框架 一句话处理 统一管理

          本文链接:https://www.haomeiwen.com/subject/snufiktx.html