应用优化最佳实践

下面的最佳实践有助于您在不牺牲质量的情况下优化应用。

使用基准配置文件

基准配置文件可以在应用首次启动后将代码执行速度提高 30%,还可让所有用户互动(例如启动应用、切换界面或滚动内容)从首次运行起就更顺畅。提升应用的速度和响应能力有助于提高日活跃用户数和平均回访率。

使用启动配置文件

启动配置文件与基准配置文件类似,但它会在编译时运行以优化 DEX 布局,进而加快应用启动速度。

使用 App Startup 库

借助 App Startup 库,您可以定义共用同一个 content provider 的组件初始化程序,而无需为需要初始化的每个组件定义单独的 content provider。这可以显著缩短应用启动时间。

延迟加载库或停用自动初始化功能

应用会使用许多库,其中一些在启动期间可能是必需的。不过,还有很多库的初始化可以延迟到第一帧绘制完毕之后。对于某些库,您可以选择在启动时停用自动初始化功能,或使用按需初始化模式。通过上述方法将初始化推迟到必要时进行,有助于提升性能。例如,您可以使用按需初始化模式,仅在需要 WorkManager 组件时才调用它。

使用 ViewStub

ViewStub 是一个不可见、零大小的 View,可用于在运行时延迟膨胀布局资源。您可以通过它推迟膨胀启动时非刚需的视图,等到之后再膨胀。

如果您使用的是 Jetpack Compose,则可以使用状态获取与 ViewStub 类似的行为,以延迟加载某些组件:

var shouldLoad by remember {mutableStateOf(false)}

if (shouldLoad) {
   MyComposable()
}

修改 shouldLoad,在条件块内加载可组合函数:

LaunchedEffect(Unit) {
   shouldLoad = true
}

这会触发重组,并包含第一个代码段中的条件代码块内的代码。

优化启动画面

启动画面是应用启动的一个主要部分,使用精心设计的启动画面有助于提升应用的整体启动体验。Android 12(API 级别 31)及更高版本包含一个旨在提升性能的启动画面。如需了解详情,请参阅启动画面

使用可伸缩的图片类型

我们建议为图片使用矢量可绘制对象。如果不可行,请使用 WebP 图片。WebP 是一种图片格式,这种格式可为网络上的图片提供出色的无损压缩和有损压缩效果。您可以使用 Android Studio 将现有 BMP、JPG、PNG 或静态 GIF 图片转换为 WebP 格式。如需了解详情,请参阅创建 WebP 图片

此外,您应尽量减少启动期间加载的图片的数量和大小。

使用性能 API

适用于媒体播放的性能 API 可在 Android 12(API 级别 31)及更高版本上使用。您可以使用此 API 了解设备功能并相应地执行操作。

优先考量冷启动跟踪记录

冷启动是指应用从头开始启动。这意味着系统的进程尚未创建应用的进程。一般而言,如果您在设备启动或系统强制应用停止后初次启动应用,执行的就是冷启动。冷启动比其他类型的启动方式(例如温启动和热启动)要缓慢得多,因为应用和系统都必须执行更多工作。通过系统跟踪冷启动,您可以更好地了解应用性能。