欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-06 17:23:28
问题是:重写了onkeydown()方法使其goback(),但是遇到的问题是,每次进入webview再次返回原始页面的时候,中间会有一个闪白的出现。 试了好多网上的...

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

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

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

后来意识到,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); 
} 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!