Android 任务启动器

在安卓的优化中,有一个点是很重要的就是APP的启动优化,更快的启动优化可以让用户更快的看到用户界面。提高用户响应速度。从而大幅度的提高用户体验。

** 首先我们来分析为什么启动慢。在我的开发经历中,当我们前期app很小的时候,这个时候其实启动都非常的快。但是当我们业务增多之后就开始逐渐变慢。和任务增多有一些关系 但是我们并没有严格的管理这些任务。我们都是一股脑的 丢在application 中去启动。我来介绍下我们的思路。

**举例 常规的app 都会具有以下的任务。

  • 图片库
  • 路由库
  • 日志库
  • push 库
  • 网络请求库
    还有一些业务库 比如依赖第三方的 sdk 比如AR 或者直播组件 支付组件 分享组件等等
    我们吧任务按照 规则区分 是否需要 在主线程启动 任务启动优先级 任务的前置任务 任务是属于CPU密集型和GPU 密集型的 具体的可以通过systrace
    我们在首屏和首页马上就要看到的 就需要使用的 优先级就应该在最前面。对于不太重要的我们可以往后面放。不需要在主线程启动的我们都可以在异步线程中去优化。
    在每一个设备中cpu 的核心是不固定的。我们想要充分的利用多线程去做更多的工作。让不太重要的工作在cpu 的空闲片段的时候执行。

前面分析完成我们的需求了 然后开始设计 。我们有一堆任务。任务之间有各种关联。我们用数学的拓扑图来标示。但是我们cpu 执行的时候是串行+并行的 所有我们将任务图 生成一个有向无环图 ,这个是我们做这个启动的关键原理。
然后就是设计我们的启动器 我们希望它充分利用CPU的多核,自动梳理任务顺序执行

启动器流程图

启动器流程图.png

具体参考 https://zhuanlan.zhihu.com/p/63188694
代码

你可能感兴趣的:(Android 任务启动器)