Определить, работает ли ios background fetch, когда приложение на переднем плане

У меня есть фоновая выборка, которая обновляет мои локальные данные sqlite.

Если приложение также работает на переднем плане, я хочу иметь возможность определить, работает ли фоновая выборка, чтобы остановить пользовательский интерфейс, пытающийся загрузить частично заполненные строки SQL.

Как я могу определить, работает ли фоновая выборка?

Кроме того, есть ли лучший шаблон пользовательского интерфейса, чем сказать пользователю, что он не может просматривать данные?

2 ответа

Вы можете проверить состояние приложения

[UIApplication sharedApplication].applicationState

Есть три возможных варианта

UIApplicationStateActive
UIApplicationStateInactive
UIApplicationStateBackground

Если вам нужно проверить, является ли это потоком пользовательского интерфейса, попробуйте это

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

Похоже, вы должны выполнять фоновую выборку с контекстом управляемого объекта, отличным от контекста управляемого объекта пользовательского интерфейса.

Вы сохраняете фоновый контекст, когда данные согласованы и доступны для отображения, и используете didSaveContextNotification объединить изменения в контекст вашего пользовательского интерфейса и обновить отображение.

Ваша справочная информация не должна была бы ничего знать о логике пользовательского интерфейса. Логика пользовательского интерфейса должна знать, что она должна обновляться после изменения данных в результате слияния.

Другие вопросы по тегам