我的应用程序是基于 Cordova 的,它监听“beforeunload”以执行一些清理并将应用程序置于退出状态,从而它不会尝试某些可能无法完成的事情(例如数据库更新) .
问题是最近(过去一个月有 4 位客户报告了与此相关的问题,对于 12 个月未更改的应用程序,多年来一直运行良好)我的应用程序正在发送 'beforeunload' 事件在后台运行 5 分钟后,实际上并没有卸载。
因此该应用程序仍在运行,但处于它认为正在退出的状态,这会导致各种问题。
我有几个修复程序准备发布。一种是忽略卸载事件,由于这些天应用程序通常在后台运行,因此不进入退出状态可能没什么大不了的。
另一种是切换到使用“卸载”事件而不是“beforeunload”,我还没有正确测试但可能是更合适的选择。
我的问题是,'beforeunload' 的这种奇怪行为是预期/已知的还是 webview 中的错误?
我对 beforeunload 的使用可以追溯到 4 或 5 年前,因此它很可能已经过时并且需要审查。
最佳答案
也许使用 cordova pause 和 resume 事件来防止当应用程序在后台时执行 beforeunload 逻辑。
关于cordova - 为什么 Android WebView 在未卸载时发送 'beforeunload' 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54186727/