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

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;

}

}

结束

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 启动优化,其实就是优化从点击icon到主页面展示这个过程的速度,让主界面尽量快的展现在用户面前。所以我们要做...
    积木zz阅读 1,212评论 0 5
  • 背景 一个项目做的时间长了,启动流程往往容易杂乱,库也用的越来越多,APP 的启动时间也会慢慢变长。本次将针对 i...
    Yealink阅读 769评论 0 0
  • 背景 一个项目做的时间长了,启动流程往往容易杂乱,库也用的越来越多,APP的启动时间也会慢慢变长。本次将针对iOS...
    lp_lp阅读 1,597评论 0 12
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,350评论 0 13
  • 感觉自己有点神经衰弱,总是觉得手机响了;屋外有人走过;每次妈妈不声不响的进房间突然跟我说话,我都会被吓得半死!一整...
    章鱼的拥抱阅读 2,220评论 4 5