当我的应用程序从后台恢复时,我希望运行一些代码。为此,我使用AppState.addEventListener()注册了一个事件。
const handleAppStateChange = () => {
console.log('Do stuff')
}
constructor(props: Props) {
super(props)
AppState.addEventListener('change', this.handleAppStateChange)
}
componentWillUnmount() {
AppState.removeEventListener('change', this.handleAppStateChange)
}
当我正常退出应用程序并恢复时,它会按预期打印“do stuff”,然而(这里是问题),当应用程序最小化并且我点击通知时,应用程序将打印两次“Do stuff”。
我已经发现,这是因为当我点击通知时,它似乎重新运行了应用程序(包括构造函数部分),这意味着它创建了第二个事件监听器...
那么,有人知道为什么在点击通知时会出现这种情况,以及是否可以通过使用react-native-push-notification插件来防止它,或者是否有一种方法可以确保不注册重复事件吗?
这在我的Android物理设备上发生,不确定是否也是iOS问题,但只是想检查一下是否有人知道是否可能。
componentDidMount
可能更适合您的事件订阅。也许这就是为什么有时会被订阅但无法取消订阅的整个问题所在。 - DogeAmazed