有没有办法告诉如果iOS应用程序意外closures?(崩溃,强制closures)

如果应用程序上次意外closures,我想在应用程序开始时执行一些操作(崩溃,强制closures),我该如何告诉它?

我通过在应用程序启动时的NSUserDefaults中将BOOL设置为YES ,以及应用程序进入前台时执行此操作。

当应用程序进入后台时,我将这个值设置为NO

didFinishLaunchingWithOptions开始时(将标志设置为YES之前),我检查标志当前是否设置为YES 。 如果是YES ,那么我知道该应用程序不正确地崩溃。

但是,这并不检查应用程序是否在后台死亡(由操作系统或用户)。

当应用程序进入后台时,可以通过设置一个标志来处理在后台(由操作系统或用户)closures的部队,并在应用程序进入前台时清除标志。 然后检查didFinishLaunchingWithOptions方法中的这个标志。 如果这个标志被设置,那么你知道你的应用程序在后台被杀害。

请记住,在后台closures的力量不应该被认为是“意外的closures”。 其实是相当期望的。

是的,您可以这样做:最简单的方法是在<Application_Home>/Documents/目录下创build一个已知名称的<Application_Home>/Documents/ ,然后在“正常”退出时删除该文件。 如果该文件在启动时出现,则知道以前的退出并不是“正常”的。

您可以定期更新文件内容,每分钟在计时器上写入当前时间戳。 这样你就可以知道exception退出发生的时间。

生病发布这只是为了将来的参考:

对于额外的覆盖率检查活动状态

  • (void)applicationDidBecomeActive:(UIApplication *)应用程序
  • (void)applicationWillResignActive:(UIApplication *)应用程序

然后使用nsuserdefaults来跟踪状态

后台检查的主要区别在于,当应用程序仍在前台执行时,用户通过应用程序切换器立即closures应用程序时会覆盖边缘案例。 这也有助于我认为背景兼容的应用程序

我认为这可能会给你更多的覆盖面之间的碰撞和力量这些…虽然我还没有testing用完电池