我正在使用一个由从服务器获取的数据提供支持的应用程序。获取逻辑相当健壮且容错;大多数连接错误都会自动重试,通常效果很好。但是,在极少数情况下(包括涉及网络延迟和后端数据库的竞争条件),应用程序/服务器可能会进入无法恢复的不一致状态。
我想做的是让应用程序在这种状态下,只需在用户下次按下主页按钮时终止(而不是进入后台)。该应用程序在重新启动时将与服务器重新同步,用户将按照他/她的快乐方式行事。
我的第一个想法是在检测到不一致状态时从 applicationDidEnterBackground 调用 exit() 。有没有人有这种事情的经验或知道另一种有条件地禁用后台的方法?我知道这是不受欢迎的,有没有人有苹果通过检测 exit() 的使用明确拒绝应用程序的经验?UIApplicationExitsOnSuspend = YES 不是一个选项,因为多任务处理需要在其他 99.999% 的时间按预期工作。
注意:对于缺乏细节,我深表歉意。理想的解决方案是想出一种从不一致状态中恢复的方法;相信我,当我说花了很多时间和精力来想办法做到这一点时。