WebView问题总结
来源:互联网 发布:高校教务网络管理系统 编辑:程序博客网 时间:2024/06/02 09:41
1、WebView的使用
参考以前写的一边博文,Android中WebView的用法 , 以及Runoob上的一篇文章,WebView的使用 。
(1)java和js交互,通过webView的addJavascriptInterface这个方法来实现交互,但是这个方法存在远程代码执行漏洞,远程攻击者可 以通。过java反射利用该方法的漏洞执行任意java对象的方法。addJavascriptInterface是给js调用本地的java方法。
webView漏洞
解决这个问题的方法:
让js通过WebChromeClient的onJsPromt方法把一段文本信息传递过来,这段文本信息中包含需要调用方法的方法名、参数等信息,然后在java中解析,得到需要调用的方法。
(2)防止内存泄漏,在Activity的onDestroy方法里面先让Layout把webView给remove掉,然后调用webView的removeAllViews和destroy方法。
(3)jsbridge用于web和Native代码进行交互
(4)webViewClient.onPageFinished->webChromeClient.onProgressChanged
因为当当前加载的网页产生跳转的时候,webViewClient.onPageFinished方法就会被调用很多次。
(5)webView会自己开启线程,不用的时候要销毁。
(7)WebView的缓存机制点击打开链接
mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹:
我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webviewCache文件夹下.
WebView中存在着两种缓存:网页数据缓存(存储打开过的页面及资源)、H5缓存(即AppCache)。
缓存构成
/data/data/package_name/cache/
/data/data/package_name/database/webview.db
/data/data/package_name/database/webviewCache.db
综合可以得知 webview 会将我们浏览过的网页url已经网页文件(css、图片、js等)保存到数据库表中
webView的5种缓存模式
LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。
LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
LOAD_CACHE_ELSE_NETWORK模式下,无论是否有网络,只要本地有缓存,都使用缓存。本地没有缓存时才从网络上获取。
(8)图片点击
在addJavascriptInterface的接口中添加OnImageClick方法,通过js将图片的url传递过来,然后在java部分启动一个Activity同来显示图片。
(9)图片缓存
参考之前写的一个Demo,点击打开链接
- WebView问题总结
- webview系列问题总结
- WebView问题总结
- android WebView 问题积累总结
- Android WebView系列文章4 WebView的问题总结
- Android WebView 使用和问题总结
- webview总结
- WebView总结
- webview总结
- webView 总结
- webview总结
- WebView总结
- WebView总结
- WebView总结
- WebView总结
- WebView总结
- Webview总结
- webview总结
- “百度之星”资格赛 1004 度度熊的午饭时光
- python 中__name__ = '__main__' 的作用
- ios获取当月第一天和最后一天
- 从头开始调试stm32 USB HID
- python中如何使用二维数组
- WebView问题总结
- Time To Get Up HDU
- HDUOJ 产生冠军(stl)
- Java内存区域与对象创建过程
- spring处理ajax请求
- 练习 2-4 squeeze(s1, s2),将字符串s1 中任何与字符串s2 中字符匹配的字符都删除。
- spark数据处理示例一:分类
- Qt一步步搭建TcpServer2——线程池
- 定期清理服务器日志