【原创】踩webView加载html源码的坑
2017-09-16 11:23
417 查看
【原创】踩webView加载html源码的坑
前言
对与移动端开发WebView的开发是必不可少的,关与webView 的一些常规使用大家可以参照 WebView·开车指南 今天在这里讲的是一个WebView加载html的一个大坑,具体现象描述就是webView加载html之后,点击内部的超链接,跳转…… ,然后回退到之前html的时候页面一片空白,
也不会像加载网页之后,也不显示用户该页面加载失败,实在把我恶心坏了。吐槽之后,我们想想如何解决这个问题呢?
思路
WebView加载html代码绝大多数情况下,只会加载一次且是刚进入页面的时候进行加载,而我们页面加载的异常bug,就是WebView.goBack()的时候回退到webView的初始状态时,html代码在内存中已经被回收了,看到这里我们的思路就来了:
1.当WebView加载html代码时,我们将这个html代码,设置一个变量把html代码保存起来
private String mHtml; // webView内部html代码的全局变量@Override protected void onCreate(Bundle bundle) { super.onCreate(bundle) loadDataUrl(this, mWebView); } /** * 加载html * @param activity * @param webView */ public void loadDataUrl(Activity activity, WebView webView){ String html = activity.getIntent().getStringExtra(WebActivity.HTML); LogUtil.e(WebActivity.TAG, "html=====>" + html); if (TextUtils.isEmpty(html)) {return;} webView.loadDataWithBaseURL(null, html, "text/html", "utf-8",null); mHtml=html; // 将html代码保留在内存中 }
2.WebView回退到初始加载html时候,再次把html源码加载一次
(1)通过调试我们从webView.getUrl( )这个值中看到了,加载html和加载url 的区别所在
// 加载html代码时,webView.getUrl()==”about:blank” 这个值可以标识富文本
public static final String HTML_TAG=”about:blank”;
(2) 回退到初始阶段的时候,重新加html
mWebView.setWebViewClient(new WebViewClient() { ...... // WebView
@Override public void onPageFinished(WebView webView, String s) { ......... WebBackForwardList webBackForwardList=mWebView.copyBackForwardList(); // 获取WebView 加载的历史数据 int index = webBackForwardList.getSize(); // 获取堆栈中的历史数据长度 if(mWebView.getUrl().equals(HTML_TAG)&&index>1&&!TextUtils.isEmpty(mHtml)){ // 满足上述bug的条件 mWebView.clearHistory(); // 恢复WebView到初始状态 mWebView.loadDataWithBaseURL(null, mHtml, "text/html", "utf-8",null); // 重新加载这个情况 } } ..... }
小结
上述处理该问题的逻辑,其实不算特别严谨,也是因为解决这个特殊的bug,且没有牵涉到具体的业务逻辑的情况下的代码,希望大家可以提出宝贵的意见或建议。
相关文章推荐
- 【原创】踩webView加载html源码的坑
- Webview获取html的title信息,webview网络加载进度条,webview返回历史页
- 【iOS】WebView加载HTML图片大小自适应与文章自动换行
- webview从服务端架加载jsp,html
- webView加载指定的网页 加载解析的HTML
- WebView加载html显示空白页面
- Android webview加载html出现空白问题
- Android中WebView加载Html中的图片添加点击事件
- iOS webview 加载html 乱码
- webview加载html内容
- Webview加载天猫html页面报错
- WebView加载网页时出现“Sorry,you browser seems not to support the HTML 5 canvas element ”
- Android的webview加载本地html、本apk内html和远程URL
- WebView加载本地html、js文件常见问题及解决办法
- webview加载html代码,其中代码中有图片
- WebView等比例加载网络Html
- webView加载html格式的字符串
- Android的WebView加载的Html输入框被手机键盘挡住解决
- WebView加载HTML图片大小自适应与文章自动换行
- WebView加载html实现网页上传本地文件(图片,拍照,语音等)