解决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);
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
相关文章
Android socket实现原理详解 服务端和客户端如何搭建
这篇文章主要为大家详细介绍了Android socket实现原理详解,以及服务端和客户端的搭建方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-08-08
Android startService的使用与Service生命周期案例详解
这篇文章主要介绍了Android startService的使用与Service生命周期案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下2021-09-09
Android开发graphics bufferqueue整体流程
这篇文章主要为大家介绍了Android开发graphics bufferqueue整体流程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-07-07


最新评论