android底层提高开机速度,Android 启动速度优化之— 提高 ARouter 的初始化速度

本文探讨如何通过在app module的build.gradle中加入ARouter插件,以及在项目build.gradle中引入依赖,显著提高ARouter在华为P40和荣耀10上的初始化速度,从而提升应用的启动速度。ARouter的初始化主要在`LogisticsCenter.init()`中进行,插件的使用避免了在运行时过滤类名的过程,减少了初始化时间。
摘要由CSDN通过智能技术生成

如何提高 ARouter 的初始化速度

在 app module 的 build.gradle 中 加入:

apply plugin: 'com.alibaba.arouter'

在项目的 build.gradle中加入:

buildscript {

repositories {

jcenter()

}

dependencies {

classpath "com.alibaba:arouter-register:1.0.2"

}

}

我的在 华为 P40 上面能够提高800毫秒,在 荣耀10上提高1.1秒

二、为什么使用插件能够提高启动速度呢?

来看看初始化的代码:

public static void init(Application application) {

if (!hasInit) {

logger = _ARouter.logger;

_ARouter.logger.info(Consts.TAG, "ARouter init start.");

hasInit = _ARouter.init(application);

if (hasInit) {

_ARouter.afterInit();

}

_ARouter.logger.info(Consts.TAG, "ARouter init over.");

}

}

真正实现的在 _ARouter.init(application)中,如下:

protected static synchronized boolean init(Application application) {

mContext = application;

LogisticsCenter.init(mContext, executor);

logger.info(Consts.TAG, "ARouter init success!");

hasInit = true;

mHandler = new Handler(Looper.getMainLooper());

return true;

}

可以看到是在 LogisticsCenter.init(mContext, executor) 真正实现的:

public synchronized static void init(Context context, ThreadPoolExecutor tpe) throws HandlerException {

mContext = context;

executor = tpe;

try {

long startInit = System.currentTimeMillis();

//billy.qi modified at 2017-12-06

//load by plugin first

// 是否使用了插件,如果使用了,那么 registerByPlugin = true,后续的就不会执行了。

loadRouterMap();

if (registerByPlugin) {

logger.info(TAG, "Load router map by arouter-auto-register plugin.");

} else {

Set;

// debug模式或者是最新版本的话每次都会重建路由表,否则从SP中读取路由表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值