我的应用程序不允许在后台运行。
我在方法中保存标记 unexpectedExit
:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
并在接下来的方法中清除标志unexpectedExit
:
- (void)applicationWillTerminate:(UIApplication *)application;
- (void)applicationDidEnterBackground:(UIApplication *)application
缺少清除标志的可能原因是什么?
我知道下一步:
- 一些越狱员工 - 我检测到越狱设备并忽略他们造成的任何崩溃
- 用户创建的崩溃(代码为 0x00000000deadfa11) - 长按锁定按钮直到 UI 更改 + 长按主页按钮 - 直到崩溃。当接近传感器打开时,这种类型的崩溃是不可能的。
- 手动重启设备 - 同时长按锁定键+主页按钮。当接近传感器打开时,这也是不可能的。
- 电池放电。我看到当电池电量为 0 时 - 它会随着应用程序的退出而直接关闭。我跟踪电池电量
- 可由 CrashLytics 或 PLCrashReporter 或类似工具处理的崩溃
与 low 相关的崩溃memory 。根据documentation应用程序应该能够处理它
(void)applicationDidReceiveMemoryWarning:(UIApplication *)application;
崩溃 generated by watchdog (使用 0x8badf00d 代码)也没有被任何崩溃工具处理(据我所知),而且我不知道有什么方法可以捕获它。你知道吗?
现实告诉我,我错过了一些东西。它可以是什么? 我上面的建议有没有错误?
最佳答案
您是否考虑过附加 mach exception handler和一个signal handler ,并用它来设置你的标志?要求在 iOS 中终止应用程序的所有方式的完整列表似乎是永远无法回答的问题 - 每个版本都有可能添加新的异常、更改异常代码或以不同的方式响应 unix 信号。您到底想用您的旗帜实现什么目的?
关于ios - iOS意外退出的方式有哪些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19063598/