我们有一个Web应用程序,它利用HTML 5应用程序缓存来提供脱机功能。在Android
上,应用程序在本机应用程序中的webview
内运行。我们已在版本4.4
中测试了该应用程序,但它可以正常运行。我们可以关闭应用程序,关闭Wifi
并重新启动应用程序,并从应用程序缓存中正确加载Web应用程序。
然而,在早期版本的Android上,特别是版本4.0和4.1(我还没有测试过4.2或4.3),应用程序缓存似乎在某些时候被破坏了。我们注意到的一个症状是应用程序事件陷入Checking
状态,并且没有其他应用程序缓存事件被触发。
以下是我发现此问题的链接:
https://code.google.com/p/chromium/issues/detail?id=258191
我们不确定是什么触发了这个事件被卡住的问题,但我们现在已经通过在应用程序缓存事件中不使用任何阻塞弹出窗口来解决它。我们发现,只要应用程序缓存停留在Checking
状态不会阻止UI,应用程序将继续正常工作。
但如果我们关闭应用程序并重新启动它,则应用程序缓存会损坏并且html无法正确加载(webview显示空白屏幕)。在这种情况下唯一有用的是手动清除缓存或重新安装应用程序,以便在启动时重新加载缓存。对于我们的客户来说,这显然不是一个可接受的工作,我们不希望在启动应用程序之前强制他们执行清除缓存。我们正在考虑以编程方式清除应用程序缓存,无论是在应用程序关闭时还是在启动时,但这种解决方法也不太理想,因为这意味着如果客户端在没有可用的Internet连接时关闭应用程序,则它们不会能够启动并继续工作。
我们需要以某种方式解决此问题,因为我们的某些客户端设备Android 4.0
并且无法升级到最新版本。如果有人遇到过这个应用程序缓存问题在关闭应用程序时损坏的经验,那么我们很乐意听到您可能在此问题上找到的任何变通方法。
击>
虽然我们有这种解决方法,但它肯定不太理想,我们宁愿知道其他人可能已经找到的任何其他解决方法。
更新:
我已经删除了处理应用程序缓存损坏的文本,因为我进一步研究了这个问题,并确定我们遇到的是由于应用程序缓存损坏导致的 not 。我们看到的是AJAX请求停止工作的(可能相关的)错误的影响。我在一个单独的问题中发布了这个问题,可以找到here。通过删除这个文本,我已经改变了这个问题,只针对 处理似乎在CHECKING状态中挂起的应用程序事件的问题。