设为首页 加入收藏

TOP

Android之webview详解(非原创)(四)
2019-09-01 23:12:42 】 浏览:105
Tags:Android webview 详解 原创
密码。如果用户选择保存,那么密码将会以明文的形式保存在本地,显然这是一个巨大的安全隐患。
??解决方案:WebView是否保存密码是由WebSettings的setSavePassword方法决定的。因此,我们只要调用这个方法并传入false,就可以避免明文储存的安全问题了。在Android 4.3及以上的版本,setSavePassword方法已经被弃用,WebView也不会默认保存密码,因此不再需要进行修复。

WeView出现OOM影响主进程
??问题描述:由于WebView默认运行在应用进程中,如果WebView加载的数据过大(例如加载大图片),就可能导致OOM问题,从而影响应用主进程。
??解决方案:为了避免WebView影响主进程,可以尝试将WebView所在的Activity运行在独立进程中。这样即使WebView出现了OOM问题,应用主进程也不会受到影响。具体做法也很简单,只要在AndroidManifest文件中为相应的Activity设置process属性即可。

WebView后台耗电问题
??问题描述:在某些情况下,即使Activity已经退出,WebView依旧占据着内存空间,这会导致设备耗电量增加。
??解决方案:在上文提到过将WebView运行在独立进程中,然后只要在Activity的onDestroy方法中调用System.exit(0)退出虚拟机,就可以避免WebView继续占据内存空间.

视频或音频在退出Activity后继续播放的问题
??问题描述:在WebView加载的网页中播放音乐或视频,然而当前应用进入后台后音乐或视频还在继续播放。
??解决方案:在Activity的onPause方法中暂停WebView,然后在onResume方法中恢复WebView。

protected void onPause() { if(webView!=null){//暂停WebView webView.onPause(); webView.pauseTimers(); } super.onPause(); } @Override protected void onResume() { if(webView!=null){//恢复WebView webView.onResume(); webView.resumeTimers(); } super.onResume(); }    

开启硬件加速导致的闪烁问题
??问题描述:在应用开启硬件加速后,WebView可能在加载过程出现闪烁现象。
??解决方案:为WebView关闭硬件加速功能。

webView.setLayerType(View.LAYER_TYPE_SOFTWARE,null); 

https请求失败的解决方案
??问题描述:在使用WebView加载https协议的网页或资源时,如果该网站的安全证书不被Android认可,就会出现无法成功加载的问题。
??解决方案:重写WebViewClient的onReceivedSslError方法,设置其接受所有网站的安全证书。

public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed();//接受所有网站证书 } 

WebView中http和https混合使用的问题
??问题描述:在Android 5.0及以上,WebView可能在加载混合使用http和https的网页时出现异常。比如在一个https的安全网页中加载使用http协议的资源将会失败。
??解决方案:在Android 5.0后利用WebSettings设置WebView支持http和https混合内容模式。

//方式1 webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); //方式2 webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); 

??需要注意,MIXED_CONTENT_ALWAYS_ALLOW这个模式是不安全的,建议先使用MIXED_CONTENT_COMPATIBILITY_MODE模式。这个模式会尝试以安全的方式加载部分http资源,另一部分http资源则不会被加载。资源是否能被加载的判断依据可能会随着版本的不同而改变,因此需要根据实际情况决定是否采用这一模式。

setDisplayZoomControls引起的崩溃问题
??问题描述:我们知道,setDisplayZoomControls(true)方法会允许显示系统缩放按钮,这个缩放按钮会在每次出现后的几秒内逐渐消失。但是在部分系统版本中,如果在缩放按钮消失前退出了Activity,就可能引起应用崩溃。
??解决方案:调用setDisplayZoomControls(false)方法不显示系统缩放按钮,反正使用手势捏合动作就可以实现网页的缩放功能了。如果确实需要使用缩放按钮,就需要在Activity的onDestroy方法中隐藏WebView。

webView.setVisibility(View.GONE); 

三、参考文章

  1. https://www.jianshu.com/p/4564be81a108
  2. https://www.jianshu.com/p/daf6d72268a4
  3. https://www.2cto.com/kf/201712/706339.html
首页 上一页 1 2 3 4 5 6 下一页 尾页 4/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android中资源的引用 下一篇react native中使用echarts

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目