我的應用程序支持後臺位置更新(特別是與顯著位置監控)啓動。我應該避免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