Есть ли способ приостановить саги, когда приложение реагирует на фон?

В настоящее время мы проверяем магазин, если приложение активно:

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, чтобы проверить, находится ли приложение в фоновом режиме, и прослушать изменение видимости события, чтобы ответить на изменения.

Используя это, вы можете приостановить и возобновить ваши часы.

В любом случае, было бы более эффективно, если бы вместо опроса вы могли получать событие при изменении значения.

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