如何在应用程序处于后台时执行核心数据操作

时间:2015-04-21 08:53:38

标签: ios multithreading core-data cllocationmanager multitasking

我为“位置更新”后台模式启用了iOS应用。我需要使用CLLocation保存部分收到的Core Data对象信息,以便稍后将一些相关信息发送到Web服务(同时应用程序在后台运行)。我已经使用NSManagedObjectContext的{​​{1}}进行了一些插入和保存的测试,并且没有分离的线程,它似乎有效(至少在模拟器中运行)。但我不知道这是否真的是合适的方式来做到这一点。我一直在寻找有关在应用处于后台状态时使用AppDelegate的信息,但没有成功。

我的问题是:这样安全吗?我的意思是,我的实现是否会导致与Core Data相关的任何异常或冲突的状态或损失以及我想要保存的信息?我应该创建一个单独的线程来处理这个吗?或者管理这种情况的最佳方法应该是什么?

提前致谢

2 个答案:

答案 0 :(得分:0)

你已经打出了不错的镜头。我的重新定位仍然是:

  1. 使用geofancing。这将通知您的应用程序选择的位置范围更改。
  2. 我不知道你为什么要求另外一个帖子。只需将任务排入dynamic dispatch即可。即使你想制作一个单独的线程。精细。
  3. 当应用在后台时,核心数据肯定会保存。这种类型的应用程序可以永久保留在后台。
  4. 每个线程使用一个托管对象上下文。托管对象上下文不是线程安全的。

答案 1 :(得分:0)

当您在后台使用位置时,您可以在后台保存护理数据

首先检查您的应用是否在后台正确运行以确定位置。 *注意:请勿通过电缆测试连接到mac或调试模式。

然后在下面的方法中如果一切顺利并且应用程序获得位置。 - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

在Core数据中添加值

如果您使用不同的viewController来保存数据,则触发位置通知并将观察者添加到核心数据中的添加值