开创云网站建设支持,天津河东网站建设公司,网站备案 免费,衡东网站定制应用有三种启动状态#xff1a;冷启动、温启动或热启动。每种状态都会影响应用向用户显示所需的时间。在冷启动中#xff0c;应用从头开始启动。在另外两种状态中#xff0c;系统需要将后台运行的应用带入前台。
我们建议您始终在假定冷启动的基础上进行优化。这样做也可以…应用有三种启动状态冷启动、温启动或热启动。每种状态都会影响应用向用户显示所需的时间。在冷启动中应用从头开始启动。在另外两种状态中系统需要将后台运行的应用带入前台。
我们建议您始终在假定冷启动的基础上进行优化。这样做也可以提升温启动和热启动的性能。
如需优化应用以实现快速启动了解系统和应用层面的情况以及它们在各个状态中的互动方式很有帮助。
确定应用启动时间的两个重要指标是初步显示所用时间 (TTID) 和完全绘制所用时间 (TTFD)。TTID 是显示第一帧所用的时间TTFD 则是应用达到可全面互动的状态所用的时间。两者同样重要因为 TTID 让用户知道应用正在加载TTFD 则意味着用户等待多长时间才能实际使用应用。如果其中任一时间过长用户都可能会在应用完全加载之前退出。
应用启动时间 | App quality | Android DevelopersAndroid 应用启动时间统计方式_android 启动时间统计-CSDN博客 如何检索 TTFD
可以使用 reportFullyDrawn() 方法测量从应用启动到完全显示所有资源和视图层次结构所用的时间。在应用执行延迟加载时此数据会很有用。在延迟加载中应用不会阻止窗口的初步绘制但会异步加载资源并更新视图层次结构。
由于延迟加载应用的初步显示不包括所有资源您不妨将完全加载并显示所有资源及视图视为单独的指标。例如您的界面可能已完全加载并绘制了一些文本但尚未显示应用必须从网络中提取的图片。
提高启动时间准确性说明了如何在您的应用达到可与用户进行互动的状态之前使用 FullyDrawnReporter 延迟调用 reportFullyDrawn。
当使用此 API 时Logcat 显示的值为从创建应用对象到调用 reportFullyDrawn() 时所用的时间。以下是 Logcat 输出的示例
system_process I/ActivityManager: Fully drawn {package}/.MainActivity: 1s54ms
Logcat 输出有时包含 total 时间。 使用新的系统跟踪工具Perfetto
系统跟踪概览 | App quality | Android Developers
Perfetto 是 Android 10 中引入的平台级跟踪工具。这是适用于 Android、Linux 和 Chrome 的成熟开源跟踪项目。与 Systrace 不同它提供数据源超集可让您以协议缓冲区二进制流形式记录任意长度的跟踪记录。您可以在 Perfetto 界面中打开这些跟踪记录。
Systrace 是平台提供的旧版命令行工具可记录短时间内的设备活动并保存在压缩的文本文件中。该工具会生成一份报告其中汇总了 Android 内核中的数据例如 CPU 调度程序、磁盘活动和应用线程。Systrace 适用于 Android 4.3API 级别 18及更高版本的所有平台版本但建议将 Perfetto 用于运行 Android 10 及更高版本的设备。
应用优化最佳实践 | App quality | Android Developers
结合使用基准配置文件和启动配置文件以便全面优化应用启动。
Android应用的首次启动时间对于用户留存率来说非常重要。谷歌在Google IO 2022上向开发者推荐了基准配置文件Baseline Profiles方案来进行优化。这个方案的通用性极高几乎所有Android应用都可以采用此方案进行优化。动辄 30%、40% 的启动优化成绩还是一个通用的解决方案而且 App 越复杂提升明显
另外此方案无Google Play也可使用只要手机支持写入profile文件即可。但要注意混淆带来的影响。
Android 强推的 Baseline Profiles 国内能用吗我找 Google 工程师求证了 - 掘金Android Baseline Profiles探究及实践 - 知乎 启动配置文件与基准配置文件类似。此类配置文件描述了对应用启动至关重要的类和方法这些类和方法必须先做好加载准备。启动配置文件也使用与基准配置文件相同的人类可读格式 (HRF)。
注意应用启动通常是多个关键 CUJ 的组合。对于简单的应用您可以启动应用的 MainActivity。不过您可能需要组合关键 CUJ例如登录和其他重要的启动功能。
启动配置文件和基准配置文件之间的一个主要区别是基准配置文件包含对应用启动以外的优化至关重要的类和方法例如减少动画期间或应用启动以外的关键用户历程 (CUJ) 期间的卡顿。
启动配置文件和基准配置文件之间的另一个主要区别是启动配置文件无法由库提供也不受 Android Gradle 插件合并的约束。这是因为库不一定充分了解应用启动的关键类和方法有哪些。这些类和方法最好衍生自 Jetpack Macrobenchmark并将 BaselineProfileRule 与专门针对应用启动的 CUJ例如 collectStableBaselineProfile结合使用。
具体操作一起看 I/O | Android 性能相关最新动态 (qq.com) DEX 布局优化
这项优化能够改进启动期间所用代码的位置缩短启动时间从而减少应用启动期间发生的主要页面故障的数量。
为此需要将启动期间要执行的所有代码添加到主要 classes.dex 文件中同时将所有非启动代码从主要 classes.dex 文件中移除。 图 1. DEX 布局优化的代码位置改进。
基准配置文件和启动配置文件需要将Android打包脚本设为7.4以上
如果不能升级打包工具版本则参考
在不使用 Macrobenchmark 的情况下创建和衡量基准配置文件 | App quality | Android Developers
类似的方案
Android Dex分包最全总结含Facebook解决方案-六虎
其他优化点 MutilDex 优化 ContentProvider 优化 启动任务重构与任务调度 Splash 与 Main 合并 反序列化优化 UI 渲染优化 主线程耗时消息优化 后台任务优化 GC 抑制
Android启动优化实践 - 知乎
抖音 Android 性能优化系列启动优化实践 - 知乎