在后台启动iOS应用程序时,我应该避免使用UI吗?

时间:2017-01-05 10:51:01

标签: ios objective-c swift cllocationmanager uibackgroundmode

我的应用支持后台位置更新(特别是具有重要的位置监控功能)。

当我确定应用程序处于后台(application.applicationState == UIApplicationStateBackground)时,是否需要阻止UI(通过控制器等)加载?

我的目的是避免在后台加载大量的UI(它是一个大应用程序),这可能会浪费我在后台有限的时间来实际响应位置更新。

例如(在ObjC中,但问题也适用于Swift),让我说我有一些RootViewController初始化并保存整个控制器/视图层次结构,我应该在{{ 1}}做:

viewDidLoad

?或者我应该只是信任" iOS会忽略所有这些UI任务,因为它会知道它处于后台状态吗?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

在后台更新UI是不必要的,令人困惑且无效。

  • 不必要,因为没有使用该应用的用户没有附加价值。在viewWillAppear中做一些简单的事情就足够了。
  • 令人困惑,因为用户可能希望在屏幕出现时自己看到更改,我不知道您的应用,但这更像是一种商业选择。也许你有类似的方式来显示像gmail / whatsapp这样的变化,你希望用户看到电子邮件/消息。
  • 效率不高,因为你过早做电池消耗的事情。你甚至说“沉重的UI加载”。如果位置一次又一次地改变会发生什么?可以在不再需要的情况下覆盖这些变化,或者无论如何总是需要进行更改。

总结:我并不是说不做任何UI更新,每个应用都有一个甜蜜点。可能你不需要做大部分和延迟加载更改,即加载屏幕似乎是更好的方法。虽然我确信有一些我不知道的高级指南。希望其他答案能够实现。