解决webview调用goBack()返回上一页自动刷新闪白的情况
程序员文章站
2023-11-17 12:32:58
问题是:重写了onkeydown()方法使其goback(),但是遇到的问题是,每次进入webview再次返回原始页面的时候,中间会有一个闪白的出现。
试了好多网上的...
问题是:重写了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); }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!