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

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 {

      @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;

}

}

结束

你可能感兴趣的:(启动优化框架 一句话处理 统一管理)