Ion*_*ger 3 android react-native react-native-push-notification
当我的应用程序从后台恢复时,我想运行这些代码。为此,我使用 AppState.addEventListener() 注册了一个事件。
const handleAppStateChange = () => {
console.log('Do stuff')
}
constructor(props: Props) {
super(props)
AppState.addEventListener('change', this.handleAppStateChange)
}
componentWillUnmount() {
AppState.removeEventListener('change', this.handleAppStateChange)
}
Run Code Online (Sandbox Code Playgroud)
当我通常退出应用程序并恢复时,它会按预期打印“做事”,但是(这是问题所在),当应用程序最小化并点击通知时,应用程序将打印“做事”两次。
我发现这是因为当我点击通知时,它似乎重新运行了应用程序(包括构造函数部分),这意味着它创建了第二个事件侦听器......
那么,有没有人知道为什么在点击通知时这样做,以及我是否可以阻止它(使用 react-native-push-notification 插件),或者是否有办法确保重复事件未注册?
这发生在我的 Android 物理设备上,不确定它是否也是 iOS 问题,但只是想我会检查是否有人知道这是否可行)
所以经过一番折腾,终于想出了一个办法。这不是很好,但现在可以完成工作。
if (AppState._eventHandlers.change.size === 0) {
AppState.addEventListener('change', this.handleAppStateChange)
}
Run Code Online (Sandbox Code Playgroud)
我觉得 AppState 页面https://facebook.github.io/react-native/docs/appstate严重不足,这就是为什么我现在能看到的唯一选择是这种私有方法。如果可以改进,将尝试跟进团队,因为在某些情况下,您不希望注册重复的事件是有道理的。
| 归档时间: |
|
| 查看次数: |
2364 次 |
| 最近记录: |