应用优化最佳实践

以下最佳实践有助于优化您的应用,而不会牺牲质量。

使用基准配置文件

基准配置文件 可将首次启动时的代码执行速度提高 30%,并让所有用户互动(例如应用启动、屏幕之间导航或滚动内容)在首次运行时更加流畅。提高应用的运行速度和响应能力可带来更多的日活跃用户和更高的平均回访率。

使用启动配置文件

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

使用 App Startup 库

通过 App Startup 库,您可以定义共享单个内容提供程序的组件初始化程序,而不是为每个需要初始化的组件定义单独的内容提供程序。这可以显著缩短应用启动时间。

延迟加载库或禁用自动初始化

应用会使用许多库,其中一些可能是启动所必需的。然而,许多库的初始化可以延迟到绘制第一个帧之后。有些库可以选择在启动时禁用自动初始化或按需初始化。使用此选项可将初始化推迟到必要时,以帮助提升性能。例如,您可以使用按需初始化,仅在需要该组件时调用 WorkManager。

使用 ViewStubs

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 了解设备功能并相应地执行操作。

优先处理冷启动跟踪

冷启动是指应用从头开始启动。这意味着系统进程尚未创建应用进程。如果设备启动后首次启动应用或系统强制停止应用,您的应用通常会冷启动。冷启动要慢得多,因为应用和系统必须执行更多在其他启动类型(如热启动和温启动)中不需要的工作。系统跟踪冷启动可让您更好地了解应用性能。