Webview加载界面白屏解决方法总结
2017-10-19 09:56
357 查看
webview嵌套HTML5界面白屏问题
问题介绍:在Android开发中,经常会遇到开发原生和H5嵌套的APP,而在android中加载H5界面时通常使用webview控件进行嵌套,而此时就会出现一些很神奇的事情——界面白屏。
如果遇到这种情况,那就只能退出程序,干掉进程,然后重新进入app,重新加载界面,目前还没有找到其他的解决方法。
经过多方面的研究,请教大神,总结了以下几点来减小这种白屏情况出现的概率。
解决方案:
1.Android中加载网页时界面会有缓存,通过清除webview的缓存,让app每次进入该H5界面时都重新加载:
2.可以通过setAppCacheEnabled方法来控制webview是否有缓存:
3.webview加载H5界面时,H5中的一些控件标签可能使用后android中不支持,可以使用setDomStorageEnabled方法来处理:
4.在不同android版本上出现白屏的情况:
[align=left]
5.Webview的控件布局时设置:[/align]
[align=left]
6.通过android系统的加速器来配置:主要在androidmanifest.xml中设置。[/align]
[align=left]
[/align]
[align=left]//开启硬件加速 app支持硬件加速:
[/align]
[align=left]application下:< application android:hardwareAccelerated="true" ...> [/align]
[align=left]
[/align]
[align=left]在使用webview的界面中关闭硬件加速:
[/align]
[align=left]activity界面注册时:<activity android:hardwareAccelerated="false" ..>[/align]
[align=left]
[/align]
[align=left]总结:webview白屏是一件很神奇的事情,目前我还没有找到最优的解决办法,只能通过这些方面来减小白屏情况出现的概率,以后还得继续研究。[/align]
[align=left] 学无止尽!!! [/align]
[align=left]
[/align]
问题介绍:在Android开发中,经常会遇到开发原生和H5嵌套的APP,而在android中加载H5界面时通常使用webview控件进行嵌套,而此时就会出现一些很神奇的事情——界面白屏。
如果遇到这种情况,那就只能退出程序,干掉进程,然后重新进入app,重新加载界面,目前还没有找到其他的解决方法。
经过多方面的研究,请教大神,总结了以下几点来减小这种白屏情况出现的概率。
解决方案:
1.Android中加载网页时界面会有缓存,通过清除webview的缓存,让app每次进入该H5界面时都重新加载:
// 清缓存和记录,缓存引起的白屏 mWebView.clearCache(true); mWebView.clearHistory(); mWebView.requestFocus(); WebSettings webSettings = mWebView.getSettings(); webSettings.setDatabaseEnabled(true); // 缓存白屏 String appCachePath = getApplicationContext().getCacheDir() .getAbsolutePath() + "/webcache"; // 设置 Application Caches 缓存目录 webSettings.setAppCachePath(appCachePath); webSettings.setDatabasePath(appCachePath);
2.可以通过setAppCacheEnabled方法来控制webview是否有缓存:
// 应用可以有缓存 true false 没有缓存 webSettings.setAppCacheEnabled(false);
3.webview加载H5界面时,H5中的一些控件标签可能使用后android中不支持,可以使用setDomStorageEnabled方法来处理:
// 解决对某些标签的不支持出现白屏 webSettings.setDomStorageEnabled(true);
4.在不同android版本上出现白屏的情况:
mWebView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不另跳浏览器 // 在2.3上面不加这句话,可以加载出页面,在4.0上面必须要加入,不然出现白屏 if (url.startsWith("http://") || url.startsWith("https://")) { view.loadUrl(url); mWebView.stopLoading(); return true; } return false; } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); } });
[align=left]
5.Webview的控件布局时设置:[/align]
<WebView android:id="@+id/web" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layerType="software" android:scrollbars="none" />
[align=left]
6.通过android系统的加速器来配置:主要在androidmanifest.xml中设置。[/align]
[align=left]
[/align]
[align=left]//开启硬件加速 app支持硬件加速:
[/align]
[align=left]application下:< application android:hardwareAccelerated="true" ...> [/align]
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" >
[align=left]
[/align]
[align=left]在使用webview的界面中关闭硬件加速:
[/align]
[align=left]activity界面注册时:<activity android:hardwareAccelerated="false" ..>[/align]
<activity android:name="com.project.activity.MainActivity" android:hardwareAccelerated="false" />
[align=left]
[/align]
[align=left]总结:webview白屏是一件很神奇的事情,目前我还没有找到最优的解决办法,只能通过这些方面来减小白屏情况出现的概率,以后还得继续研究。[/align]
[align=left] 学无止尽!!! [/align]
[align=left]
[/align]
相关文章推荐
- IOS webView 因URL中含有中文加载网页白屏显示的解决方法
- 解决webview加载网页出现白屏的问题
- 关于安卓webview加载网页黑屏、部分黑屏或blank的解决方法
- android解决加载webview时因缓存引起的白屏
- iOS11 WKWebView 无法加载内容的解决方法
- Android开发 activity里面的WebView加载js调用windows.location.reload()会弹出浏览器的解决方法
- webview加载页面,JS方法不能加载的问题解决
- WebView load**方法 加载资源【总结】
- webview加载htmlstring里有工程里的图片解决方法
- WebView通过URL加载H5界面出现空白的原因与解决办法
- fragment加载webView与ViewPager所带来的滑动冲突问题解决方法
- swipeRefreshLayout与WebView,ListView滑动冲突解决方法总结
- 解决WebView加载离线HTML时白屏、黑屏以及可能不显示的问题
- android通过webView加载第三方h5应用,部分手机加载部分图片失败和播放部分视频失败的解决方法
- ios开发之webView.scalesPageToFit = YES后 加载页面遇见表格显示很小的解决方法
- android h5 js 混合开发解决webview加载白屏,不加载网页的问题(硬件加速网页渲染,优化体验)
- 解决webview加载网页出现白屏的问题
- 解决webview加载网页出现白屏的问题
- android通过webView加载第三方h5应用,无法加载图片和播放视频的解决方法