检测前景中的应用程序是否正在运行ios后台提取

时间:2014-12-21 12:59:20

标签: ios background-fetch

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

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

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

另外,是否有更好的ui模式而不是告诉用户他们无法查看数据?

2 个答案:

答案 0 :(得分:0)

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

[UIApplication sharedApplication].applicationState

有三种可能的选择

UIApplicationStateActive
UIApplicationStateInactive
UIApplicationStateBackground

如果您需要检查它是否是UI线程,请尝试使用

if ([NSThread isMainThread])
{
    // main thread
}

答案 1 :(得分:0)

听起来你应该使用UI管理对象上下文中的不同托管对象上下文进行后台提取。

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

您的后台获取不必了解UI逻辑。 UI逻辑只需知道在数据因合并而发生更改后应该更新。