应用优化最佳实践

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

使用基线配置文件

基线配置文件 可以将代码执行速度从首次启动提高 30%,并且可以使所有用户交互(例如应用启动、在屏幕之间导航或滚动内容)从第一次运行时变得更加流畅。提高应用的速度和响应能力会导致每日活跃用户增加,平均回访率提高。

使用启动配置文件

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

使用应用启动库

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

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

应用使用许多库,其中一些可能是启动所必需的。但是,可能存在许多库,其初始化可以延迟到绘制第一帧之后。某些库可以选择在启动时禁用自动初始化或进行按需初始化。使用此选项将初始化推迟到必要时,以帮助提高性能。例如,您可以使用按需初始化仅在需要组件时调用 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

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

优先考虑冷启动跟踪

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