Android冷启动优化之启动器

本文探讨了Android应用启动时的优化技巧,如多线程使用、延迟初始化、IdleHandler等,通过实例展示了如何通过拓扑排序提高启动效率。项目Initiator提供了一种简化启动流程的方法,通过添加任务并按依赖执行。链接:https://github.com/Ulez/Initiator

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android启动优化方向:

1、合理利用多线程,核心线程数的设置。利用Systrace辅助查看各任务的启动时间耗时

cpu time:真正使用的时间。(数据小为IO密集型操作,可以随便开线程开启该任务,如使用线程池的newCachedThreadPool。)

wall time:包含等待的时间片。(就绪状态:等待时间片的到来。或者阻塞状态:主动的等待条件)

2、延迟初始化(不重要的任务)

3、IdleHandler

4、sp优化:优先使用apply;分多个文件存储;editor替换多次提交;在Application提早初始化;

5、启动阶段不启动子进程

6、提前异步类加载,class.forName或者new对象。思路是替换系统的classLoader,打印出来。


启动器功能:

按照任务的依赖关系,进行拓扑排序,然后按照是否必须运行在主线程,用对应的线程池或者handler执行任务,简化启动的代码。

拓扑排序示例:

运行效果:

使用方式:

Initiator.getInstance()
        .addTask(new C14())
        .addTask(new C13())
        .addTask(new C12())
        .addTask(new C11())
        .addTask(new C10())
        .addTask(new C9())
        .addTask(new C8())
        .addTask(new C7())
        .addTask(new C3())
        .addTask(new C2())
        .addTask(new C1())
        .start();

项目地址:https://github.com/Ulez/Initiator

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值