在应用程序中进行数据库访问是不好的做法:didFinishLaunchingWithOptions:?

时间:2015-03-13 13:58:06

标签: ios database

我们遇到了崩溃,幸运的是来自内部用户,所以我们能够详细检查她的手机,并重建了发生的事情:她有一个非常老而慢的iPhone。当她升级到我们的最新版本时,第一次有数据库访问它会触发迁移,这在她的旧慢速手机上显然需要很长时间。不幸的是,我们第一次ping数据库是在应用程序中:didFinishLaunchingWithOptions:,并且iOS决定我们的应用程序花了太长时间才完成,并且在数据库迁移过程中杀死了应用程序。这意味着每次她尝试启动应用程序之后,数据库都会损坏并且发生了不好的事情。

显然,我们可以通过在应用程序中不进行任何数据库访问来解决这个问题:didFinishLaunchingWithOptions:。但另一方面,我们已经在一个拥有旧手机的用户身上看到过这种情况(可能是一个非常完整的数据库)。因此,我不确定裤子是否会弄湿这个" bug"是...

在应用程序中点击数据库是一种可怕的做法:didFinishLaunchingWithOptions :,我们应该在下一个可能的机会解决这个问题吗?或者它不是那么大的交易,我们只是有一个完美的风暴"这里?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如你所知,你不应该在didfinishlaunchingwithoptions执行一个长期运行的任务因为它必须尽快返回。我不知道限制是什么。但在你的情况下,你已达到极限。

因此,解决方案是在必须执行长时间运行的任务(例如大型数据库迁移)时添加启动画面(或等待屏幕)。将迁移放在此ViewController中(而不是在AppDelegate中),即使在慢速设备中也不会出现问题。