我有一个后台获取来更新我的本地 sqlite 数据。
如果应用程序也在前台运行,我希望能够检测后台提取是否正在运行,以阻止 UI 尝试加载部分填充的 sql 行。
如何检测后台提取是否正在运行?
另外,有没有比告诉用户他们无法查看数据更好的 ui 模式?
我有一个后台获取来更新我的本地 sqlite 数据。
如果应用程序也在前台运行,我希望能够检测后台提取是否正在运行,以阻止 UI 尝试加载部分填充的 sql 行。
如何检测后台提取是否正在运行?
另外,有没有比告诉用户他们无法查看数据更好的 ui 模式?
您可以检查应用程序的状态
[UIApplication sharedApplication].applicationState
有三种可能的选择
UIApplicationStateActive
UIApplicationStateInactive
UIApplicationStateBackground
如果你需要检查它是否是 UI 线程,试试这个
if ([NSThread isMainThread])
{
// main thread
}
听起来您应该使用与 UI 托管对象上下文不同的托管对象上下文进行后台获取。
当数据一致且可显示时,您将保存您的背景上下文,并使用 将didSaveContextNotification
更改合并到您的 UI 上下文中并更新显示。
您的后台获取不必了解有关 UI 逻辑的任何信息。UI 逻辑只需要知道它应该在数据由于合并而改变后更新。