Определить, работает ли ios background fetch, когда приложение на переднем плане
У меня есть фоновая выборка, которая обновляет мои локальные данные sqlite.
Если приложение также работает на переднем плане, я хочу иметь возможность определить, работает ли фоновая выборка, чтобы остановить пользовательский интерфейс, пытающийся загрузить частично заполненные строки SQL.
Как я могу определить, работает ли фоновая выборка?
Кроме того, есть ли лучший шаблон пользовательского интерфейса, чем сказать пользователю, что он не может просматривать данные?
2 ответа
Вы можете проверить состояние приложения
[UIApplication sharedApplication].applicationState
Есть три возможных варианта
UIApplicationStateActive
UIApplicationStateInactive
UIApplicationStateBackground
Если вам нужно проверить, является ли это потоком пользовательского интерфейса, попробуйте это
if ([NSThread isMainThread])
{
// main thread
}
Похоже, вы должны выполнять фоновую выборку с контекстом управляемого объекта, отличным от контекста управляемого объекта пользовательского интерфейса.
Вы сохраняете фоновый контекст, когда данные согласованы и доступны для отображения, и используете didSaveContextNotification
объединить изменения в контекст вашего пользовательского интерфейса и обновить отображение.
Ваша справочная информация не должна была бы ничего знать о логике пользовательского интерфейса. Логика пользовательского интерфейса должна знать, что она должна обновляться после изменения данных в результате слияния.