安卓手机怎么降低抖音版本,安卓手机抖音怎么才能不自动更新

首页 > 经验 > 作者:YD1662022-10-27 15:37:14

抖音启动任务优化的核心思想是代码价值最大化资源利用率最大化。其中代码价值最大化主要是确定哪些任务应该在启动阶段执行,它的核心目标是将不应该在启动阶段执行的任务从启动阶段去除掉;资源利用率最大化则是在启动阶段任务已经确定的情况下,尽可能多的去利用系统资源以达到减少任务执行耗时的目的。对于单个任务而言,我们需要去优化它的内部实现,减少它本身的资源消耗以提供更多资源给其他任务执行,对于多个任务则是通过合理的调度以充分利用系统的资源。

从落地角度而言我们主要围绕两个事情开展:启动任务重构与任务调度。

启动任务重构

由于业务复杂度较高且前期对启动任务的管控较为宽松,抖音启动阶段的任务有超过 300 个,这种情况下对启动阶段的任务进行调度能够在一定程度上提升启动速度,但是仍然比较难将启动速度提升到一个较高的水平,因此启动优化中非常重要的一个方向就是减少启动任务

为此我们将启动任务分成了配置任务、预加载任务和功能任务三大类。其中配置任务主要用于对各类 sdk 进行初始化,在它没有执行之前相关的 sdk 是无法工作的;预加载任务主要是为了对后续的某些功能进行预热,以提升后续功能的执行速度;功能任务则是在进程启动这一生命周期执行的与功能相关的任务。对于这三类任务我们采用了不同的改造方式:

任务调度

关于任务调度业界有过比较多的介绍,这里对于任务的依赖分析、任务排布等不再进行介绍,主要介绍抖音在实践过程中一些可能的创新点:

1.4 Activity 阶段优化

之前的几个阶段都属于 Application 阶段,接下来看一下 Activity 阶段的相关优化,这个阶段我们将介绍 Splash 与 Main 合并、反序列化优化两个典型例子。

安卓手机怎么降低抖音版本,安卓手机抖音怎么才能不自动更新(5)

1.4.1 Splash 与 Main 合并

首先来看一下 SplashActivity 与 MainActivity 的合并,在之前的版本中抖音的 launcher activity 是 SplashActivity,它主要承载着广告、活动等开屏相关逻辑。一般情况下我们的启动流程为:

  1. 进入 SplashActivity,在 SplashActivity 中判断当前是否有待展示的开屏;
  2. 如果有待展示的开屏则展示开屏,等待开屏展示结束再跳转到 MainActivity,如果没有开屏则直接跳转到 MainActivity。

安卓手机怎么降低抖音版本,安卓手机抖音怎么才能不自动更新(6)

在这个流程下,我们的启动需要经历两个 Activity 的启动,如果把这两个 Activity 进行合并,我们可以取得两方面的收益

  1. 减少一次 Activity 的启动过程;
  2. 利用读取开屏信息的时间,做一些与 Activity 强关联的并发任务,比如异步 View 预加载等。

要实现 Splash 与 Main 合并,我们需要解决的问题主要有 2 个:

第 1 个问题比较容易解决,我们可以通过 activity-alias targetActivity 将 SplashActivity 指向 MainActivity 解决。接下来我们来看一下第二个问题。

安卓手机怎么降低抖音版本,安卓手机抖音怎么才能不自动更新(7)

launchMode 问题

在 Splash 与 Main 合并之前,SplashActivity 与 MainActivity 的 LaunchMode 分别是 standard 和 sinngletask,这种情况下我们能够确保 MainActivity 只有一个 实例,并且在我们从应用 home 出去再次进入时,能够重新回到之前的页面。

将 SplashActivity 与 MainActivity 合并以后,我们的 launcher Activity 变成了 MainActivity,如果继续使用 singletask 这个 launchMode,当我们从二级页面 home 出去再次点击 icon 进入时,我们将无法回到二级页面,而会回到 Main 页面,因此合并后 MainActivity 的 launch mode 将不再能够使用 singletask。经过调研,我们最终选择了使用 singletop 作为我们的 launchMode。

安卓手机怎么降低抖音版本,安卓手机抖音怎么才能不自动更新(8)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.