Есть ли способ приостановить саги, когда приложение реагирует на фон? - PullRequest
0 голосов
/ 09 декабря 2018

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

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 Ответ

0 голосов
/ 10 декабря 2018

С помощью API видимости страницы вы можете использовать document.hidden, чтобы проверить, находится ли приложение в фоновом режиме, и прослушать событие видимости для ответа на изменения.

Использование этогоВы можете приостановить и возобновить свои часы.

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

...