解决webview调用 goBack() 返回上一页自动刷新闪白的情况

问题是:重写了onKeyDown()方法使其goBack(),但是遇到的问题是,每次进入webview再次返回原始页面的时候,中间会有一个闪白的出现。

试了好多网上的方法,发现都是扯淡。委屈

后来意识到,webView 有缓存存在着缓存模式,怎么用不同的缓存模式呢?

//设置缓存模式
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
需要把模式改成LOAD_NO_CACHE!!
但是每次都得重新请求很费资源,于是可以放在onKeyDown()里重新写一个LOAD_NO_CACHE,只在返回时调用无缓存模式
这样就可以在返回前一个页面的时候不刷新出现闪白了
代码:
private void initView() {  
    webview = (WebView) findViewById(R.id.faq_wv);  
    webview.loadUrl(url);  
    webview.setWebViewClient(new WebViewClient() {  
        @Override  
        public boolean shouldOverrideUrlLoading(WebView view, String url) {  
            view.loadUrl(url);  
            return true;  
        }  
    });  
    WebSettings settings = webview.getSettings();  
    settings.setJavaScriptEnabled(true);  
    settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);  
}  
  
/* 改写物理按键返回的逻辑 */  
  
@Override  
public boolean onKeyDown(int keyCode, KeyEvent event) {  
    if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) {  
        // 返回上一页面  
         webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);  
        webview.goBack();  
        return true;  
    }  
    return super.onKeyDown(keyCode, event);  
}  

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值