首页 > 解决方案 > SwiftUI 应用程序在进入前台之前冻结了几秒钟

问题描述

我正在开发一个包含大量动画组件的 SwiftUI 应用程序。当应用程序处于前台时,形状上的自定义动画工作正常,没有延迟。它们以 60 FPS 的速度平稳运行。

当应用程序从后台转到前台时,应用程序会冻结几秒钟并变得完全无响应。然后它恢复正常行为。

我尝试运行时间分析器仪器,但主线程没有被阻塞。似乎 CPU 上没有工作。有趣的是,应用程序的后台状态和前台状态(在应用程序生命周期轨道中)之间存在差距,如图所示。

什么可能导致应用程序冻结?关于如何调试此问题的任何想法?

如果有帮助,该应用程序还有一个核心运动组件,当应用程序进入后台时我不会暂停。

在此处输入图像描述

标签: iosswiftswiftui

解决方案


我考虑了一个类似的问题。就我而言,事实证明修饰符 .drawingGroup() 导致了这个问题。如果我启动我的应用程序一切都很好,但如果我把它放到后台并再次将它带到前台它会停止 4 秒。我删除了 drawingGroup 修饰符,这个问题得到了解决。


推荐阅读