Android WebView白屏解决方案
项目中 加载webview网页 偶尔链接会白屏 先说一下解决方案
解决方案三种:
1、mWebView.getSettings().setDomStorageEnabled(true);
2、mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);//设置是否支持插件
3、还有可能和缓存有关系 可以设置清理一下缓存
webView默认是不开启DOM Storage的,需要手动调用setDomStorageEnabled(true)来开启,只有开启了DOM Storage api后页面才能正常缓存一些数据
有可能是h5用了插件 要设置一下
什么是DOM Storage
HTML5 是下一代 HTML 标准,开始吸引越来越多人的目光。HTML5 的 DOM Storage 机制提供了一种方式让程序员能够把信息存储到本地的计算机上,在需要时获取。这点和 cookie 相似,区别是 DOM Storage 提供了更大容量的存储空间。
DOM Storage 分为 sessionStorage 和 localStorage。
localStorage 对象和 sessionStorage 对象使用方法基本相同,它们的区别在于作用的范围不同。sessionStorage 用来存储与页面相关的数据,它在页面关闭后无法使用。而 localStorage 则持久存在,在页面关闭后也可以使用。
webview一些必要设置的属性
//设置支持jswebSettings.setJavaScriptEnabled(true);//设置适应屏幕webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小webSettings.setPluginState(WebSettings.PluginState.ON);//设置是否支持插件webSettings.setSupportZoom(true); //支持缩放webSettings.setBuiltInZoomControls(true);webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件//设置存储模式webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);webSettings.setAllowFileAccess(true);//setDomStorageEnabled解决了webview白屏问题 设置支持DomStoragewebSettings.setDomStorageEnabled(true);//设置支持本地存储webSettings.setDatabaseEnabled(true);//设置缓存webSettings.setAppCacheEnabled(true);webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);webSettings.setJavaScriptCanOpenWindowsAutomatically(true);//支持通过JS打开新窗口webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片webSettings.setDefaultTextEncodingName("utf-8");//下面三个各种监听mWebView.setWebChromeClient(wcc);mWebView.setDownloadListener(dl);mWebView.setWebViewClient(wvc);//加载连接mWebView.loadUrl(XXXXXXXX);
Android WebView与h5的js方法交互:
1、设置支持js
webSettings.setJavaScriptEnabled(true);
2、注入 Java 对象到 WebView 中
binding.webView.addJavascriptInterface(getJavascriptObject(), "bridge");注:Java 对象定义如下,需要特别注意的是,在 JELLY_BEAN_MR1 之后,只有 public 且添加了 @JavascriptInterface注解的方法才能被调用
private JavascriptObject getJavascriptObject(){return new JavascriptObject();
}public class JavascriptObject{@JavascriptInterfacepublic final void showTitleBar(){binding.webView.post((Runnable)(() -> {binding.rlHeaderView.getRoot().setVisibility(View.VISIBLE);}));}@JavascriptInterfacepublic final void getCurrentLocation(@NotNull final String jsCallback) {binding.webView.post((Runnable)((Runnable) () -> {CharSequence var1 = (CharSequence)jsCallback;if (var1 != null && var1.length() != 0) {binding.webView.loadUrl("javascript:window." + jsCallback);}}));}
}
getCurrentLocation方法就是h5调用客户端的方法,jsCallback是客户端给h5的回调方法
Android WebView白屏解决方案相关推荐
- Android webView白屏问题
在安卓中webview 因为硬件加速,资源获取慢以及其他各种问题都会导致页面白屏 网上找了一堆解决方案 例如,先关闭硬件加速开启软件加速,或者等到加载完成后,webview在OnPageFinish的 ...
- android webview白屏,Android中WebView加载页面出现白屏解决方案
首先在WebViewClient中添加 @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, ...
- android webview白屏,处理方案:webview 闪白屏问题
先说一种比较尴尬的做法,之后说一种非常有效的做法,仿苹果真正的做法. android:layerType="software" 这句加在webview控件里面 说实话,对我没啥用. ...
- Android 启动白屏解决方案
方案一: 方案二: 方案二变种: 1.先让APP的启动背景变成另一张不是白色的图片 2.再在activity启动的时候把那张设置的非白色的图片设置为白色 方案三: 配置splash_preview.x ...
- React Native Android启动白屏的一种解决方案下
React Native Android启动白屏的一种解决方案下 参考文章: (1)React Native Android启动白屏的一种解决方案下 (2)https://www.cnblogs.co ...
- React Native Android启动白屏的一种解决方案上
React Native Android启动白屏的一种解决方案上 参考文章: (1)React Native Android启动白屏的一种解决方案上 (2)https://www.cnblogs.co ...
- android广告页白屏_Android 启动页白屏解决方案
当我们打开app的时候是不是会有一瞬间的白屏然后再进入主活动,虽然这并不会造成什么不好的后果,但是感觉用户体验就不是很好.像网易云音乐等等,打开一瞬间就显示了他们的loge,无缝衔接,没有白屏,怎么 ...
- electorn 白屏解决方案(偶发性白屏)
百度了半天感觉都不靠谱,最终查阅官方文档找到问题所在-------渲染进程崩溃 可以通过监听`render-process-gone`事件捕获到崩溃的消息,检测到之后重新加载 代码如下 app.on( ...
- 解决android启动白屏问题
第一步:在Sytle中自定义AppTheme <style name="AppTheme.Launcher"><item name="android:w ...
- 安卓 WebView 白屏(记录)
WebView 白屏(布局覆盖错误) 做了一个RecycleView的列表展示,打算点击之后跳转一个网页,之后无论怎么做,Webview 显示的都是白屏. 首先,这个Activity 我是Linear ...
最新文章
- jquery实现在元素外单击,隐藏此元素
- 有关gcc,make,gdb的知识
- 区块链、自动驾驶、人工智能鏖战开始 谁将成为下一个风口?
- ListView常用属性、方法
- 查找和排序的一点浅显认识
- Java面试常见算法
- tomcat报错无法启动组件_微软正在修复Windows Server无法启动的0xc0000001报错故障
- 解决三星PM981硬盘无法正常安装黑苹果的问题(第一版)
- java代码规范插件_阿里java代码规范IDEA插件之傻瓜教程
- BlackBerry 7290如何传自定义图片
- 腾讯云IM-SDK集成(web端)完成IM登录
- 马克思主义原理 - 圣才思维导图
- Ubuntu 回收站目录
- mysql数据库级监控及常用计数器解析
- MS coco数据集下载链接
- 模仿京东tab切换--自创
- 基于图像的光照(Image-Based Lighting, IBL)概述
- 电机控制中标幺的目的
- 编程之美 - 孟岩点评
- Linux树莓派开发——配置树莓派内核源码,内核编译,更换树莓派Linux内核