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

Android 在WebView错误上显示自定义html会泄漏真实页面,android,webview,Android,Webview,我试图在WebView遇到错误时显示自定义html代码 除了1种不必要的行为外,它工作得很好:有时,尤其是当垃圾邮件loadUrl短暂地显示真正的错误页面时 下面是它的外观: 有人知道是什么导致了这种情况和/或如何避免吗?不希望在加载完成之前阻止WebView完全绘制。这也会导致正确显示的页面等待完全加载 重新创建问题的代码非常简单: 单击按钮时禁用该按钮,然后在页面完成加载时启用该按钮。这是因为调用loadData时,请求只是排队等待WebView完成处理其他任务(如显示错误页面)后处理。基

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

除了1种不必要的行为外,它工作得很好:有时,尤其是当垃圾邮件loadUrl短暂地显示真正的错误页面时

下面是它的外观:

有人知道是什么导致了这种情况和/或如何避免吗?不希望在加载完成之前阻止WebView完全绘制。这也会导致正确显示的页面等待完全加载

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


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

这是因为调用loadData时,请求只是排队等待WebView完成处理其他任务(如显示错误页面)后处理。基本上,应用程序作者无法在WebView自身加载内容的基础上快速加载内容,以至于用户不会注意到

我建议采取两种备选办法:

首先将WebView置于屏幕外,即在可见屏幕坐标之外,尝试加载,捕获错误,加载错误页面,等待onPageFinished,然后在屏幕上移动WebView

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


目前还没有解决方法:@isma3l感谢AOSP链接:在页面完成加载之前使WebView无响应对我来说不是一个合适的解决方案,对不起……我的方法与AOSP错误中的第1项略有不同:,@isma3l-感谢您提供它!