我使用 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
被调用,但它没有实现内部的功能,只打印第一行。
默认情况下,JS 计时器不会在后台工作,因此 setInterval 和 setTimeout 回调只会在应用程序返回前台后运行