【发布时间】:2019-10-26 01:12:08
【问题描述】:
iOS 13 中的场景支持和多个窗口使何时保存数据的问题变得复杂。场景代表的sceneDidEnterBackground 可能看起来不错,但有时它还不够:
如果您的场景位于最前面并且用户转到应用切换器并终止您的应用,您将获得
sceneDidDisconnect和applicationWillTerminate,而不是sceneDidEnterBackground。如果用户在您的应用位于最前面时关闭设备,您将获得
applicationWillTerminate,而不是sceneDidEnterBackground。
人们使用什么策略来管理支持窗口场景和可能多个窗口的 iOS 13 应用程序中的数据保存?
【问题讨论】:
-
这是第三种情况:用户打开了您的应用程序的多个场景(每个全屏)。在前景中查看其中一个全屏场景时,如果他们随后切换到应用程序切换器并将最近的场景滑出屏幕顶部,则该场景确实会调用其
sceneDidEnterBackground。应用程序未终止,因为还有另一个场景(当前在后台)。 -
我的意思是“做”,我的意思不是“不做”。运行您的应用程序。得到它,所以两个场景并排显示在屏幕上。将分隔线滑动到屏幕边缘,使一个场景全屏显示。当然,另一个进入后台,并为那个调用
sceneDidEnterBackground。现在双击主页按钮以调出应用程序切换器。你看这两个场景。如果您在前景中滑动刚刚离开的场景,该被杀死的场景现在将调用其sceneDidEnterBackground。至少我的应用是这样的。 -
@rmaddy 好吧,我发现这非常令人困惑,不仅因为我在模拟器和设备上得到不同的结果,还因为使用 OSLog 进行控制台穴居人调试并不完全可靠。用户在应用切换器中向上滑动我们的情况非常困难,因此我在这里为它创建了一个单独的问答:stackoverflow.com/questions/58573015/…
-
如果我正确阅读了您对其他问题的回答(这与我所看到的以及我在之前的 cmets 中发布的内容相匹配),那么这不是您在这个问题中的第一个要点不正确?事实上,在那种情况下,你确实会接到
sceneDidEnterBackground的电话(和applicationWillTerminate)。 -
@rmaddy 好吧,事实证明这是我在另一个答案中关注的奇怪场景:一个具有场景支持但关闭多个窗口的应用程序,在 iPad 上运行。