我的应用程序支持后台位置更新(特别是与显著位置监控)启动。我应该避免UI时,iOS应用程序在后台
我需要防止用户界面(通过控制器等)加载,当我确定应用程序是在后台()?
我的目的是避免重UI加载(这是一个很大的应用程序)的背景下,这可能会浪费所有的时间有限我在后台实际位置更新响应。
例如(在ObjC,但问题也是斯威夫特),让我们说我有一些RootViewController
它初始化并保持整个控制器/视图层次,我应该在viewDidLoad
做:
if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) {
// Root view controller loaded while in background, so doing only background stuff
[self justDoBackgroundStuffWithoutUI];
} else {
// Root view controller loaded normally, so loading normal UI
[self initializeUIAndChildControllers];
}
?或者我应该只是“信任”的iOS忽略所有这些UI的任务,因为它会知道它在后台状态?
您可以只相信iOS系统处理这个问题,它不会呈现在后台状态UI,这就是内置到操作系统。底层的UIKit框架将决定应用程序是否需要实际渲染。请记住,视图控制器的应用程序生命周期事件主要是响应用户交互,一旦viewDidLoad和viewDidAppear已经运行,其余的只在用户做某事时才真正运行,而当应用程序不在前台时它们不会是 – Scriptable
另一种那么我认为如果我的控制器还会在他们的'viewDidLoad'上自动下载许多图像 - 我猜测,os不会被忽略。也许'UIImageView'a不会被渲染,但数据和'UIImage'确实会被加载。 – mllm
在这种情况下,网络请求“应该”仍然完成,但是当应用程序退后时,任何剩余的任务只有有限的时间才能完成暂停/终止前的操作。它不会不停地运行。 – Scriptable