我正在开发一款定期从蓝牙外设接收数据的应用。之后,比如20次更新,我使用Core Data持久保存数据,这比每次更新后的持久性更有效。
如果我有10个更新并且用户按下主页,则应用程序移至后台,我将上下文保存到" applicationDidEnterBackground"方法 - 没问题,即使应用程序随后被终止,也会保存10个更新。
我已经添加了UIBackground:bluetooth-central模式,以便在用户按下主页按钮后可以在后台继续更新。引用Apple:
当你的应用宣布这个时,系统会从暂停中唤醒它 声明允许它处理与蓝牙相关的事件。
因此,当收到蓝牙更新时,应用程序移动到后台状态,调用回调(例如didUpdateValueForCharacteristic),然后可以转换回挂起状态并可以终止。一直以来,都没有调用任何app delegate回调,新数据也会丢失。
我的问题是 - 在这种情况下我们如何/在什么时候将新数据(或更常见的任何结果应用程序状态)保存到持久存储?