Есть ли способ приостановить саги, когда приложение реагирует на фон?
В настоящее время мы проверяем магазин, если приложение активно:
function* cycleChatBadge() {
let task;
while (true) {
const state = yield select(),
isAppActive = isAppActiveSelector(state);
if (!isAppActive) {
yield call(delay, 8000)
yield put({type: "CHAT_BADGE"});
return;
}
const { input } = yield take('CHAT_BADGE');
if (task) {
yield cancel(task)
}
task = yield fork(getChatBadge)
}
}
Однако нам интересно, насколько оптимизирован этот подход с точки зрения энергопотребления и разряжает ли аккумулятор каждые 5 секунд, проверяя магазин. Поэтому мы подумали о приостановке корневой саги, когда приложение переходит в фоновый режим. Является ли это возможным?
1 ответ
С API видимости страницы вы можете использовать document.hidden, чтобы проверить, находится ли приложение в фоновом режиме, и прослушать изменение видимости события, чтобы ответить на изменения.
Используя это, вы можете приостановить и возобновить ваши часы.
В любом случае, было бы более эффективно, если бы вместо опроса вы могли получать событие при изменении значения.