gpt4 book ai didi

android - React Native : AppState. addEventListener 在点击通知时在恢复时注册重复事件

转载 作者:行者123 更新时间:2023-12-02 10:15:30 33 4
gpt4 key购买 nike

我有一些代码想要在我的应用程序从后台恢复时运行。为此,我使用 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 问题,但我只是想检查一下是否有人知道这是否可能)

最佳答案

经过一番折腾,我终于找到了解决办法。这不是很好,但现在已经完成了工作。

if (AppState._eventHandlers.change.size === 0) {
AppState.addEventListener('change', this.handleAppStateChange)
}

我感觉AppState页面https://facebook.github.io/react-native/docs/appstate ,严重不足,这就是为什么我现在能看到的唯一选择是这种私有(private)方法。如果可以改进的话,我们将尝试与团队跟进,因为在某些情况下,您不希望注册重复的事件是有道理的。

关于android - React Native : AppState. addEventListener 在点击通知时在恢复时注册重复事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54482733/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com