React Native - 有时从后台打开应用程序会导致应用程序冻结

11

最近我在我的 iOS 应用程序中发现了一些奇怪的 bug(在 Android 上目前我还没有看到这个问题)。

当发布模式安装在我的真实设备上(即使是来自 App Store 的生产应用程序也会出现相同的问题),并且当应用程序从背景打开,例如 1、2 小时后 - 我的应用程序会冻结几秒钟(我可以滚动我的列表但不能使用 Touchables)。有时它会冻结 5 秒钟,有时会冻结 10 秒钟……冻结时间不是固定的。

我使用 React Native Navigation 进行导航。首先,我认为可能是导航的问题 - 但是我可以通过选项卡导航。所以我可以通过选项卡导航,在选项卡中滚动 FlatLists,但是列表项是不可点击的 - 我可以单击它们,但 onPress 没有被调用。而当冻结结束后几秒钟后 - 我的应用程序执行所有未完成的导航。也就是说,它打开了所有在应用程序冻结时被点击的屏幕...

谁遇到过这样的问题?我该如何解决?请帮帮我,我在这里卡了几天 :(

React-Native 版本:0.59.10; React 版本:16.8.3;

谢谢提前。


当您重新打开应用程序时,是否会调用任何API或执行任何UI更新?虽然我过去使用了0.59.10版本进行构建,但我没有遇到这样的问题。尝试进行调试并提供日志,也许我们可以从那里进一步深入。 - Tommy Leong
@TommyLeong 謝謝您的訊息。實際上,我確實呼叫了API,但沒有更新UI。我甚至已經將該API調用註釋掉,以確定問題不在其中 - 但是問題仍然存在...應用程式再次凍結了。 - David
从未发现或收到关于此类错误的投诉。这是所有iOS版本都会出现的问题还是只有iOS13? - Tommy Leong
@TommyLeong 我发现在 IOS13 甚至在 IOS12.1.4 上也有此问题。 - David
有趣,我会尝试调整我的应用来测试,不过我怀疑这种情况可能发生。如果你有进一步的发现,请分享更多更新。 - Tommy Leong
显示剩余10条评论
1个回答

2
这种情况确实发生在我身上,但我的解决方法非常愚蠢,所以你的问题很可能与其他事情有关。然而,我花了一整天和部分夜晚才找到答案,所以如果有一点帮助的话,以下是我的经历...
我在应用程序的根目录下有一个函数,用于初始化一些东西。
 useEffect(() => {
    dispatch(init())
 }, []);

在我的init函数中,我进行了一些非常奇怪的操作。
setInterval(() => { dispatch(setTabsReady(true)) },0)

我实际上想表达的是

setTimeout(() => { dispatch(setTabsReady(true)) },0)

令人惊讶的是,这个问题只在我切换到其他应用程序后重新打开应用程序时才会影响到其他功能。

这是一个极具破坏性的问题,导致各种奇怪的行为,而我只有事后才意识到它们之间的关系。


1
这实际上是我项目冻结的原因... :) 所以谢谢你。 - Andy Reimann
不会吧!太好了,它帮到你了! - Martin Carstens
1
@MartinCarstens 我遇到了完全相同的问题!你为我们节省了一天的时间!非常感谢 :) - SiSa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接