从后台被杀死的应用程序中恢复 - 重新启动时调用哪些方法?

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

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

【讨论】:

以上是关于从后台被杀死的应用程序中恢复 - 重新启动时调用哪些方法?的主要内容,如果未能解决你的问题,请参考以下文章

Android 警报管理器在重新启动设备或从后台杀死应用程序后取消

如果应用程序被杀死/运行,ios显示/隐藏通知

当应用程序在颤动中被杀死/终止时,从后台事件启动应用程序

杀死应用程序或将应用程序置于后台后恢复下载

发件人应用程序在被杀死后如何恢复会话?

android 模拟应用因内存不足被后台杀死命令