如果应用程序上次意外关闭,我想在应用启动时做一些事情。(崩溃,强行关闭),我该怎么说呢?
答案 0 :(得分:6)
我是通过在应用启动时和应用进入前台时在NSUserDefaults中设置BOOL
到YES
来实现此目的。
当应用进入后台时,我将此值设置为NO
。
在didFinishLaunchingWithOptions
开始时(在将标志设置为YES之前),我检查该标志当前是否设置为YES
。如果是YES
,那么我知道应用程序已经不正常地崩溃了。
但是,这不会检查应用程序是否在后台被操作系统或用户杀死。
您可以通过在应用程序进入后台时设置标记并在应用程序进入前景时清除标记来处理在后台(由操作系统或用户)关闭的力。然后在didFinishLaunchingWithOptions
方法中检查此标志。如果设置了此标志,则表示您的应用程序在后台被杀死。
请记住,在后台关闭的力量不应该被视为“意外关闭”。这实际上是非常期待的。
答案 1 :(得分:3)
是的,您可以这样做:最简单的方法是在<Application_Home>/Documents/
目录中创建一个已知名称的文件,并在“正常”退出时删除该文件。如果文件在启动时存在,则您知道先前的退出不是“正常”退出。
您可以定期更新文件内容,每分钟在计时器上写入当前时间戳。通过这种方式,您可以了解异常退出的时间。
答案 2 :(得分:2)
发布此信息仅供将来参考:
使用
进行额外的覆盖检查活动状态然后使用nsuserdefaults来跟踪状态
背景检查的主要区别在于,当应用程序仍然在前台执行时,当用户通过应用程序切换器立即关闭应用程序时,这些覆盖了边缘情况。这也有助于我认为背景兼容的应用程序
我认为它可能会让你在碰撞和使用这些物品的力量之间获得更多的报道......虽然我还没有测试过电池耗尽