简体   繁体   中英

Should I avoid UI when iOS app is launched in background

My app supports background location updates (specifically with significant location monitoring).

Do I need to prevent UI (via controllers etc.) from loading when I identify that the app is in background ( application.applicationState == UIApplicationStateBackground )?

My intention is to avoid heavy UI loading (it's a BIG app) in background, that might waste all the limited time I have in background to actually respond to the location update.

For example (in ObjC, but the question is also for Swift), let's say I have some RootViewController which initializes and holds the whole controllers/view hierarchy, should I, in the viewDidLoad do:

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];
}

? Or should I just "trust" iOS to ignore all of those UI tasks, because it will know it's in a background state?

您可以忽略这些并让操作系统处理它,只要小心,如果您有长时间运行的BG任务,它们可能有也可能没有时间完成,所以最好小心,因为它不允许您永远运行任务。

Updating UI in background is unnecessary and confusing and non-efficient.

  • unnecessary because there is no added value to the user who's not using the app. A simple doing of things in viewWillAppear would suffice.
  • confusing because users maybe expecting to see changes themselves as the screen is appeared, I don't know of your app, but this is more of a business choice. Maybe you have something similar in the manner of displaying changes like gmail/whatsapp and you want users to see the new emails/messages.
  • non-efficient because you are just doing something battery consuming too early. You even said "heavy UI loading". What happens if the location changes again and again and again? could the changes be overridden in the sense that they are no longer necessary or you will always need the changes regardless.

To summarize: I'm not saying don't do any UI updates, every app has a sweet spot. Likely you won't need to do most of them and lazy loading the changes ie upon loading screen seems to be the better way. Though I'm sure there are some advanced guidelines which I'm unaware of. Hopefully other answers would will come.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM