在WebView上显示自定义html错误会泄漏真实页面

时间:2015-10-13 17:43:54

标签: android webview

我试图在WebView遇到错误时显示自定义HTML代码。

除了1个不需要的行为外,它的工作正常:有时(特别是在发送垃圾邮件时)loadUrl会简要显示真正的错误页面。

以下是它的外观:

unwanted behaviour

有谁知道造成这种情况的原因和/或如何避免它?完全阻止WebView完全绘制,直到加载完成为止。这也会导致正确显示的页面等待"等待"直到他们满载。

重新创建问题的代码非常简单:

activity_main.xml
MainActivity.java

2 个答案:

答案 0 :(得分:0)

单击按钮时禁用该按钮,然后在页面完成加载时启用该按钮。

答案 1 :(得分:0)

这种情况正在发生,因为当您调用loadData时,在WebView完成处理其他任务(如显示错误页面)后,请求才会排队等待处理。基本上,应用程序作者无法在WebView加载的内容之上加载其内容,以至于不会被用户注意到。

我建议采用两种替代方法:

  1. 首先将WebView置于屏幕外(即外部可见屏幕坐标),尝试加载,捕获错误,加载错误页面,等待onPageFinished,然后在屏幕上移动WebView。 / p>

  2. 完全依靠自己加载,例如Cronet,然后通过shouldInterceptRequest将结果提供给WebView。这是一种更复杂的方法,但可以让您完全控制WebView显示的内容。基本上,您不需要在WebView中处理onReceivedError,因为WebView实际上永远不会自己获取内容。如果您在加载程序中检索数据时遇到任何问题,您将自己生成错误页面并将其作为结果提供给WebView以显示。