是否可以知道RN应用程序是否已进入后台?任何回调或触发器?
如果我在屏幕上componentDidUnmount
或componentWillUnmount
收听,只有在我回到另一个屏幕时才会被触发
答案 0 :(得分:16)
您可以收听appState
事件。
来自https://facebook.github.io/react-native/docs/appstate.html:
import React, {Component} from 'react'
import {AppState, Text} from 'react-native'
class AppStateExample extends Component {
state = {
appState: AppState.currentState
}
componentDidMount() {
AppState.addEventListener('change', this._handleAppStateChange);
}
componentWillUnmount() {
AppState.removeEventListener('change', this._handleAppStateChange);
}
_handleAppStateChange = (nextAppState) => {
if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
console.log('App has come to the foreground!')
}
this.setState({appState: nextAppState});
}
render() {
return (
<Text>Current state is: {this.state.appState}</Text>
);
}
}
顺便说一句,这总是会说'当前状态是:活动',因为这是用户可以看到该应用的唯一状态。
答案 1 :(得分:4)
您可以使用AppState
:
应用程序状态
active
- 应用程序正在前台运行background
- 该应用在后台运行。用户在另一个应用程序或主屏幕上inactive
- 这是在前景和前景之间转换时发生的状态。背景,以及在不活动期间,例如进入多任务处理视图或来电时