我添加了Internet权限,并且我还使用了WebViewClient.onPageFinished
方法来检查该页面是否已加载,事实证明确实如此。 JavaScript is also enabled代表我的WebView
。
我用于设置网络视图的代码
webView.webChromeClient = KeplerWebChromeClient(progressBar)
webView.webViewClient = keplerWebViewClient
webView.settings.javaScriptEnabled = true
webView.settings.useWideViewPort = true
webView.settings.loadWithOverviewMode = true
webView.settings.setSupportZoom(true)
webView.settings.setSupportMultipleWindows(true)
webView.scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY
webView.setBackgroundColor(Color.WHITE)
我正在使用KeplerWebChromeClient
显示网页加载进度。
[keplerWebViewClient
是WebViewClient
类的对象,我用于加载网页并跟踪网页是否已完成加载。
而且我必须提到,这个问题并不总是会出现。有时,当我运行我的应用程序时,WebView
可以正常工作,并且可以正确加载并显示网页,而其他时候则不能。我发现以下陈述的[[logcat条目对于不显示网页时是唯一的。
E /铬:[ERROR:tile_manager.cc(778)]警告:超出了图块内存限制,某些内容可能无法绘制[[ERROR:tile_manager.cc(778)]警告:已超出图块内存限制,某些内容可能无法绘制
E /铬:[ERROR:tile_manager.cc(778)]警告:超出了图块内存限制,某些内容可能无法绘制
E /铬:[ERROR:tile_manager.cc(778)]警告:超出了图块内存限制,某些内容可能无法绘制
这里有什么问题,我该如何解决?预先感谢。
编辑:我从手机中清除了所有应用程序数据,然后重新启动了我的应用程序。这样做之后,一切工作正常。我可以使用WebView进行浏览,但是在使用该应用几次后,即关闭并打开它,问题再次出现。清除所有数据可暂时解决问题。这对解决问题有什么帮助?
private fun setupWebView(url: String) {
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true
webView.settings.setPluginState(WebSettings.PluginState.ON);
webView.settings.allowFileAccess = true;
webView.webViewClient = WebClient()
webView.webChromeClient = CustomWebChromeClient()
webView.loadUrl(url)
}
private inner class WebClient : WebViewClient() {
override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
}
override fun onPageCommitVisible(view: WebView, url: String) {
super.onPageCommitVisible(view, url)
}
override fun shouldOverrideUrlLoading(
view: WebView,
url: String
): Boolean {
view.loadUrl(url)
return true
}
override fun onPageFinished(view: WebView, url: String) {
super.onPageFinished(view, url)
}
}
private inner class CustomWebChromeClient : WebChromeClient() {
override fun onJsAlert(
view: WebView,
url: String,
message: String,
result: JsResult
): Boolean {
return false
}
}
我希望它对您有用!