代码之家  ›  专栏  ›  技术社区  ›  Guy

当React本机应用程序转到后台时,是否有方法暂停传奇?

  •  0
  • Guy  · 技术社区  · 6 年前

    当前,我们会检查应用程序是否处于活动状态:

    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 回复  |  直到 6 年前
        1
  •  1
  •   jorbuedo    6 年前

    Page Visibility API 您可以使用document.hidden检查应用程序是否在后台,并侦听事件visibilitychange以响应更改。

    使用它你可以暂停和继续你的手表。

    无论如何,如果您可以在值更改时管理接收事件,而不是轮询,则效率会更高。