问题场景
多个web View入口 多层web View 多次点击之后不能这个厂返回上一级页面并且出现了加载页面错乱现象
问题原因
web View的缓存机制 导致从一个web View入口退出之后没有及时销毁加载的网页 造成的退出上一级的时候加载的是缓存机制里的WebView页面
解决方法
思路:在webView的加载监听(setWebviewClient)中提供了一个shouldOverrideUrlLoading()方法来加载url 所以在点击webView进入页面的时候要先对上个入口加载的url进行清空历史处理 接下来再加载新的url 就有效避免了url重复展示
代码展示
but1=findViewbyId(R.id.btnOne);
btn2=fingdViewById(R.id.btnTwo);
//两个按钮都点击跳转WebView
private boolean isClearHistory=fale;//定义是否清除历史变量
//按钮点击事件
onClick{
case R.id.btn1:
isClearHistory=true;//清除历史
initWeb();//展示Url
break:
case R.id.btn2:
isClearHistory=true;
initWeb();
break;
}
private void initWeb(){
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(isCliearHistory){
//这里证明是重新进入页面 先清空历史再展示
webView.clearHistory(true);
isClearHistory=false;
}else{
webView.setUrl("");
isClearHistory=true;
}
return false;
}
}); }
先记这么多 有问题欢迎指出问题 相互学习