写点什么

互联网领域里有个八秒定律,如果网页打开时间超过 8 秒

发布于: 1 小时前

简介

互联网领域里有个八秒定律,如果网页打开时间超过 8 秒,便会有超过 70%的用户放弃等待,对 Android APP 而言,要求更加严格,如果系统无响应时间超过 5 秒,便会出现 ANR,APP 可能会被强制关闭,因此,启动时间作为一个重要的性能指标,关系着用户的第一体验。


爱奇艺安卓 APP 非常重视启动速度的优化,本文将从启动过程,启动时间测量,启动优化,以及后续监控等方面分享我们在启动优化方面积累的经验

AndroidX 的前世今生

Android 系统在刚刚面世的时候,可能连它的设计者也没有想到它会如此成功,因此也不可能在一开始的时候就将它的 API 考虑的非常周全。随着 Android 系统版本不断地迭代更新,每个版本中都会加入很多新的 API 进去,但是新增的 API 在老版系统中并不存在,因此这就出现了一个向下兼容的问题。


举个例子,当 Android 系统发布到 3.0 版本的时候,突然意识到了平板电脑的重要性,因此为了让 Android 可以更好地兼容平板,Android 团队在 3.0 系统(API 11)中加入了 Fragment 功能。但是 Fragment 的作用并不只局限于平板,以前的老系统中也想使用这个功能该怎么办?于是 Android 团队推出了一个鼎鼎大名的 Android Support Library,用于提供向下兼容的功能。比如我们每个人都熟知的 support-v4 库,appcompat-v7 库都是属于 Android Support Library 的,这两个库相信任何做过 Android 开发的人都使用过。


但是可能很多人并没有考虑过 support-v4 库的名字到底是什么意思,这里跟大家解释一下。4 在这里指的是 Android API 版本号,对应的系统版本是 1.6。那么 support-v4 的意思就是这个库中提供的 API 会向下兼容到 Android 1.6 系统。它对应的包名如下:



类似地,appcompat-v7 指的是将库中提供的 API 向下兼容至 API 7,也就是 Android 2.1 系统。它对应的包名如下:



可以发现,Android Support Library 中提供的库,它们的包名都是以**android.support.***开头的。


但是慢慢随着时间的推移,什么 1.6、2.1 系统早就已经被淘汰了,现在 Android 官方支持的最低系统版本已经是 4.0.1,对应的 API 版本号是 15。support-v4、appcompat-v7 库也不再支持那么久远的系统了,但是它们的名字却一直保留了下来,虽然它们现在的实际作用已经对不上当初命名的原因了。


那么很明显,Android 团队也意识到这种命名已经非常不合适了,于是对这些 API 的架构进行了一次重新的划分,推出了 AndroidX。因此,AndroidX 本质上其实就是对 Android Support Library 进行的一次升级,升级内容主要在于以下两个方面。


第一,包名。之前 Android Support Library 中的 API,它们的包名都是在**android.support.*下面的,而 AndroidX 库中所有 API 的包名都变成了在 androidx.*下面。这是一个很大的变化,意味着以后凡是 android.*包下面的 API 都是随着 Android 操作系统发布的,而 androidx.***包下面的 API 都是随着扩展库发布的,这些 API 基本不会依赖于操作系统的具体版本。


第二,命名规则。吸取了之前命名规则的弊端,AndroidX 所有库的命名规则里都不会再包含具体操作系统 API 的版本号了。比如,像 appcompat-v7 库,在 AndroidX 中就变成了 appcompat 库。

最后

本文在开源项目腾讯文档已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中...


目前已经更新的部分资料,需要的自取:





用户头像

还未添加个人签名 2021.07.01 加入

VX:Lzzzzzz63

评论

发布
暂无评论
互联网领域里有个八秒定律,如果网页打开时间超过8秒