1

我有一个后台获取来更新我的本地 sqlite 数据。

如果应用程序也在前台运行,我希望能够检测后台提取是否正在运行,以阻止 UI 尝试加载部分填充的 sql 行。

如何检测后台提取是否正在运行?

另外,有没有比告诉用户他们无法查看数据更好的 ui 模式?

4

2 回答 2

0

您可以检查应用程序的状态

[UIApplication sharedApplication].applicationState

有三种可能的选择

UIApplicationStateActive
UIApplicationStateInactive
UIApplicationStateBackground

如果你需要检查它是否是 UI 线程,试试这个

if ([NSThread isMainThread])
{
    // main thread
}
于 2014-12-21T13:03:02.817 回答
0

听起来您应该使用与 UI 托管对象上下文不同的托管对象上下文进行后台获取。

当数据一致且可显示时,您将保存您的背景上下文,并使用 将didSaveContextNotification更改合并到您的 UI 上下文中并更新显示。

您的后台获取不必了解有关 UI 逻辑的任何信息。UI 逻辑只需要知道它应该在数据由于合并而改变后更新。

于 2015-07-19T21:00:18.783 回答