我在Android上运行,如果我使用硬件返回按钮退出应用程序,则会调用componentWillUnmount函数。但是,如果我使用方形按钮显示正在运行的应用程序列表并滑动关闭,则不会调用该函数。
有关如何检测应用程序何时关闭的任何想法,以便我可以清除计时器,保存数据等。
感谢。
答案 0 :(得分:3)
您可以检查AppState Api,以获取有关检测当前状态前景或活动状态的信息。 https://facebook.github.io/react-native/docs/appstate.html
答案 1 :(得分:0)
我遇到了同样的问题。为了解决它,我没有将事件监听器附加到stateChange。相反,我只是查看componentDidMount()函数内的AppState.currentState。
问题是当组件挂载时,eventListeners正在附加,但却没有在componentWillUnmount上分离。
答案 2 :(得分:0)
您可以为您为硬件按钮编写的服装功能设置条件,例如(例如,对于 React Native Router Flux )Actions.currentScene === 'Home'
或您想要的其他条件。
答案 3 :(得分:0)
如果您使用的是react-navigation 4.x,则可以使用以下代码(从其他地方复制)。 我认为这个问题将在react-navigation 5.x中解决。
componentDidMount() {
const {navigation} = this.props;
this.focusListener = navigation.addListener('didFocus', () => {
const focused = navigation.isFocused();
if (focused) {
console.log('mount');
}
});
this.blurListener = navigation.addListener('willBlur', () => {
console.log('unmount');
});
}
componentWillUnmount() {
this.focusListener.remove();
this.blurListener.remove();
}