Ios 当应用程序进入后台模式时,如何处理核心数据迁移?

Ios 当应用程序进入后台模式时,如何处理核心数据迁移?,ios,core-data,background,data-migration,Ios,Core Data,Background,Data Migration,我是否应该让迁移继续进行,然后让iOS在迁移时间超过分配的时间(5秒)时终止应用程序[这将生成崩溃日志] 或者我应该中止应用程序?[这还将生成崩溃日志]可能用于请求更多时间?这是否意味着我应该在后台线程中执行迁移?如果所给的额外时间仍然不足以完成迁移任务,我是否应该让iOS终止应用程序?我不确定它到底需要多少时间(可能取决于较新的iOS版本,您可以通过backgroundTimeRemaining)获取该信息,但是我认为beginBackgroundTaskWithExpirationHandl

我是否应该让迁移继续进行,然后让iOS在迁移时间超过分配的时间(5秒)时终止应用程序[这将生成崩溃日志]


或者我应该中止应用程序?[这还将生成崩溃日志]

可能用于请求更多时间?

这是否意味着我应该在后台线程中执行迁移?如果所给的额外时间仍然不足以完成迁移任务,我是否应该让iOS终止应用程序?我不确定它到底需要多少时间(可能取决于较新的iOS版本,您可以通过
backgroundTimeRemaining
)获取该信息,但是我认为beginBackgroundTaskWithExpirationHandler应该给你10分钟的时间。如果时间不够,最好考虑一个更复杂的解决方案(电池耗尽或用户手动退出应用程序的可能性不大,5分钟以上的任务),我认为额外的时间足够了。但这是否意味着迁移需要在后台执行?beginBackgroundTaskWithExpirationHandler不会在单独的“后台”线程/队列/上运行代码。这只是告诉操作系统你正在运行一些可能需要一些时间的任务的一种方式,如果你的应用程序被发送到后台(如果它仍然处于活动状态:没有问题),那么(如果可能的话)不应该被中止。示例代码:迁移任务之后是否调用了endBackgroundTask?