我试图在WebView
遇到错误时显示自定义HTML代码。
除了1个不需要的行为外,它的工作正常:有时(特别是在发送垃圾邮件时)loadUrl
会简要显示真正的错误页面。
以下是它的外观:
有谁知道造成这种情况的原因和/或如何避免它?完全阻止WebView
完全绘制,直到加载完成为止。这也会导致正确显示的页面等待"等待"直到他们满载。
重新创建问题的代码非常简单:
答案 0 :(得分:0)
单击按钮时禁用该按钮,然后在页面完成加载时启用该按钮。
答案 1 :(得分:0)
这种情况正在发生,因为当您调用loadData
时,在WebView完成处理其他任务(如显示错误页面)后,请求才会排队等待处理。基本上,应用程序作者无法在WebView加载的内容之上加载其内容,以至于不会被用户注意到。
我建议采用两种替代方法:
首先将WebView置于屏幕外(即外部可见屏幕坐标),尝试加载,捕获错误,加载错误页面,等待onPageFinished
,然后在屏幕上移动WebView。 / p>
完全依靠自己加载,例如Cronet,然后通过shouldInterceptRequest
将结果提供给WebView。这是一种更复杂的方法,但可以让您完全控制WebView显示的内容。基本上,您不需要在WebView中处理onReceivedError
,因为WebView实际上永远不会自己获取内容。如果您在加载程序中检索数据时遇到任何问题,您将自己生成错误页面并将其作为结果提供给WebView以显示。