轻量级数据库迁移是不是与后台应用程序一起运行?
Posted
技术标签:
【中文标题】轻量级数据库迁移是不是与后台应用程序一起运行?【英文标题】:Is a lightweight database migration running with an app in background?轻量级数据库迁移是否与后台应用程序一起运行? 【发布时间】:2013-07-22 11:25:59 【问题描述】:如果应用在 ios5/iOS6 的后台运行,轻量级数据库迁移是否仍在运行? 如果我开始迁移,然后打开另一个应用程序,迁移还会继续吗?
2。 手机锁定在初始屏幕时是否也在运行?
谢谢
【问题讨论】:
我不明白这个问题。据我所知和经验,当您使用迁移选项调用addPersistentStoreWithType:...
或显式调用 migrateStoreFromURL:...
时,迁移运行(同步)
@MartinR 是的,但是当你运行应用程序、运行那行代码、打开另一个应用程序或关闭设备屏幕时会发生什么,是在后台运行迁移?
好的,现在我明白你的问题了!
@MartinR 有没有办法禁用设备睡眠模式?所以 iOS 永远不会回到锁定屏幕来中断迁移?
【参考方案1】:
不,当应用处于后台时,不会运行 Core Data 迁移。
原因:当用户更新您的应用程序时,它将被关闭然后更新。然后在更新后首次启动应用程序时运行数据库迁移。
编辑:那么当用户在迁移过程中点击主页按钮时会发生什么?我猜 Core Data 会停止并回滚到有效状态(版本),并且可能会在用户再次打开应用程序后重新启动。但我不太确定。
编辑 2: 考虑到这一点,我几乎可以肯定我的建议是正确的。在迁移过程中,Core Data 堆栈并未最终初始化,当用户单击 Home-Button 时它将停止。因此,当用户返回应用程序并且应用程序第一次访问NSManagedObjectContext
时,必须重新构建核心数据堆栈。但为了 100% 确定,请在模拟器和设备中尝试一下 - 应该更省力。
【讨论】:
是的,但是如果我打开新更新的应用程序,迁移开始,然后我锁定了 iPhone 的屏幕(屏幕关闭),会发生什么情况。迁移是否仍在后台运行?或者,例如,如果我打开另一个应用程序。 ps。有没有办法禁用设备睡眠模式?这样 iOS 就永远不会回到锁定屏幕来中断迁移?以上是关于轻量级数据库迁移是不是与后台应用程序一起运行?的主要内容,如果未能解决你的问题,请参考以下文章
如何转储 django-cms 相关内容以便与正在运行的实例一起迁移?