App启动优化解决方案

因为最近空闲时间比较多,所以 有时间研究一下App的优化,首先看的是启动速度优化,查找了好多资料,无非是将启动过程由原来的单线程转变为多线程执行,比如,在你的App中的Application的oncreate方法,通常,第三方SDK的初始化会集中在这里进行。这里呢,由于进行大量的SDK初始化的工作,所以会比较耗时,所以解决App启动太慢,就要从这里入手。

比如,在App中会有网络请求的初始化、加载控件的初始化、第三方推送(友盟、极光为例)的初始化、本地数据库的初始化、等等一系列的初始化操作,如果不采取一定的措施,那么随着App功能越来越丰富,那需要在这里进行的初始化工作会越来越多,App启动速度会越来越慢。下面我介绍一种解决方案。

首先,定义线程调度类,DispatcherExecutor。这个类的主要作用就是初始化线程池,作为接收所有任务的容器类。

然后,将App的各种初始化功能封装为各种任务,通过回调方法来判断各个任务的依赖关系。

在oncreate方法中,初始化任务对象,然后将各个对象塞入任务容器,这里边会有一个算法的操作,称为有向无环图的拓扑排序,将有依赖关系的各任务执行关系进行排序,排序好的任务会按新排序的顺序依次执行,无依赖关系的任务会直接交给线程调度器进行执行。

当然了,因为有些SDK的初始化操作是需要在主线程完成的,所以要充分考虑这一需求,在任务调度执行时进行线程判断。

经过一系列的操作之后呢,我们之前单线程的执行代码顺序变为多线程一起执行,这也是我们做这个优化的核心思想。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值