从后台恢复应用程序时,导航5的“焦点”侦听器未触发

时间:2020-07-17 03:19:55

标签: android ios react-native use-effect react-navigation-v5

我正在使用React Navigation 5,并且试图在屏幕上设置焦点侦听器以执行一些操作。
我需要在其中设置监听器的Screen是一个触发浏览器启动的Class组件,当用户使用“后退导航”关闭浏览器并返回到应用程序。

在测试此流程时,我注意到从浏览器返回甚至从后台启动时都未触发侦听器。另一方面,我可以成功测试在应用程序中的屏幕之间导航时,一切是否按预期工作。 而且,我还为焦点侦听器设置了取消订阅者,我可以看到它没有被不正确地调用,并且侦听器似乎还活着。

我搜索了其他问题,关于SO的问题,阅读了文档,但找不到解决方案。就React Native而言,我确实是一个新手,但我希望在将应用程序置于后台后也会触发焦点监听器。 还是实际上有办法实现?

我设法用示例代码创建了一个Snack(我的应用程序未使用Expo CLI,但我也看到该问题也已正确再现)。 这是一个非常简单的带有两个屏幕的StackNavigator。 Screen1Class组件,我想在其中收听焦点。

  1. 通过按“转到浏览器”按钮,将打开Goog​​le网站,但导航回该应用程序时,不会显示任何日志,表明焦点已打开;
  2. 进入后台并备份应用程序,该焦点不会显示任何日志;
  3. 按下“转到屏幕2”按钮,将打开第二个屏幕,并且在向后导航时,焦点测试日志会通知我们焦点已经打开。

我的软件版本:

iOS和Android 12.4.7和API 29&24
@ react-navigation / native 5.5.1
@ react-navigation / stack 5.5.1
react-native-gesture-handler 1.6.1
react-native-safe-area-context 3.0.5
react-native-screens 2.8.0
反应本色0.62.2
节点12.17.0
npm 6.14.6

0 个答案:

没有答案