在后台调用函数不起作用(React-Native、AppState)

问题描述 投票:0回答:1

我使用 AppState 来检查应用程序何时进入后台,以便我可以调用与在前台时调用的函数相同的函数。

状态改变后调用的函数:

    _handleAppStateChange = () => {
    if (AppState.currentState === 'background') {
        console.log('App has come to the background!')
        this._getDataHandler();
    }
    //this.setState({ appState: nextAppState });
}

在前一个函数中调用的另一个函数:

_getDataHandler(){
console.log('_getDataHandler is called');

    clearInterval(this.carInterval);
        this.carInterval = setInterval(() => {
            try {
                //some functions
            } catch (Exception) {
                console.log("Error: " + Exception);
            }
        }, 5000);}

componentDidMount():

    componentDidMount() {
        AppState.addEventListener('change', this._handleAppStateChange);
}

componentWillUnmount():

componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
}

现在,问题是

_getDataHandler
被调用,但它没有实现内部的功能,只打印第一行。

javascript reactjs react-native state background-process
1个回答
0
投票

默认情况下,JS 计时器不会在后台工作,因此 setInterval 和 setTimeout 回调只会在应用程序返回前台后运行

© www.soinside.com 2019 - 2024. All rights reserved.