【问题标题】:Recovering from App Being Killed in Background - Which Methods Are Called on Restart?从后台被杀死的应用程序中恢复 - 重新启动时调用哪些方法?
【发布时间】:2014-02-03 11:54:57
【问题描述】:

我有一个应用程序,我想在后台运行时从被杀中恢复。

似乎发生的情况是,如果应用程序由于内存压力而在后台被终止,则在重新进入应用程序时,应用程序将返回到根视图控制器。

从测试看来,在这种情况下,根视图控制器上既没有调用 viewWillAppear 也没有调用 viewDidLoad,因此我无法在恢复时以这种方式执行任何代码。

我的问题是在上述场景中调用了哪些方法,最终,我如何向根视图控制器发送消息以处理应用在后台被杀死后重新启动的情况?

【问题讨论】:

  • 你确定它被杀死了吗?如果是,那么应用程序将重新启动,就像它是一个新的开始......
  • 似乎有两种情况——一种是应用重启,另一种是返回根视图。
  • didFinishLaunchingWithOptions 委托方法会在应用程序每次重启时被调用
  • 好的,谢谢。在这种情况下,有没有办法可以在我的 rootViewController 中调用特定方法?
  • 您可能在委托方法中收到内存警告,但是当应用程序处于后台时您无法处理该警告。当应用程序进入后台时将应用程序的状态保存在数据库中,并在应用程序重新启动时在 didFinishLaunchingWithOptions 中编写适当的代码

标签: ios objective-c background-process appdelegate springboard


【解决方案1】:

如果您的应用因内存压力而被终止,那么您将重新启动。这是肯定的。

如果你想在这种情况下恢复你的状态,这取决于你。

您可以使用 iOS 6 中内置的状态恢复工具。我还没有使用它们,所以我没有给您具体的提示。

您需要某种方法来保存导航状态(屏幕上的模态 VC 和/或导航堆栈)以及屏幕上每个 VC 的状态数据)以及任何全局应用程序状态数据。

【讨论】:

    【解决方案2】:

    UIApplication 协议参考

    https://developer.apple.com/library/ios/documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html#jumpTo_9

    应用程序重启时调用delegate方法didFinishLaunchingWithOptions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      相关资源
      最近更新 更多