有没有办法告诉如果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用完电池