启动速度是留住每日活跃用户并确保从第一次互动开始就提供无缝用户体验的重要指标。这在低内存环境中尤其如此,在这种环境中可能需要考虑性能权衡。但是,在开始改进应用启动之前,务必了解导致启动本身的根本原因。
最佳实践
随附基线配置文件
基线配置文件通过避免对包含的代码路径进行解释和即时 (JIT) 编译步骤,将第一次启动的代码执行速度提高约 30%。通过在应用中随附基线配置文件,Android 运行时 (ART) 可以通过提前 (AOT) 编译优化包含的代码路径,为每个新用户和每次应用更新提供性能增强。
避免急切初始化
避免在应用的启动序列中执行可能不必要的急切工作。应用启动进程最可能的场景是通过启动应用来完成。但是,WorkManager、JobScheduler、BroadcastReceiver、绑定服务和AndroidX 启动库 也可以在后台启动应用进程。如果可能,请避免在Application
类中不必要地急切初始化任何内容。许多库都提供按需初始化功能,让您只在需要时调用它们。
将任务从 UI 线程移至后台线程
如果有些任务耗时较长并阻塞主线程,请将其移至后台线程或使用 WorkManager 以确保效率。确定占用大量时间或消耗时间超过预期的操作。优化这些任务可以帮助大幅提升启动速度。
分析并修复严重的磁盘读取争用
StrictMode 是一种开发者工具,可以帮助检测在应用的主线程(接收 UI 操作和动画发生的地方)上意外使用磁盘或网络访问的情况。一旦该工具检测到可能的改进领域,您可以自动终止应用或记录违规行为,以便稍后进行检查。
避免同步 IPC
应用执行中的长时间暂停通常是由 binder 调用(Android 上的进程间通信 (IPC) 机制)引起的。在最新版本的 Android 中,这是 UI 线程停止运行的最常见原因之一。通常,解决方法是避免调用进行 binder 调用的函数;如果不可避免,则应缓存该值或将工作移至后台线程。如需了解更多信息,请参阅线程调度延迟。