`

android之WebView

 
阅读更多

1.为什么请求一个网页第一次能用webview展示正常,再次进入该页面就不能正常展示了?

       最近做项目时,遇到这样一个问题:用webview展示动态网页时,第一次请求该页面用webview能正常展示,再次点击进入该页面就提示加载失败,不能正常展示了(网页中静态页面部分能展示,动态页面就加载失败了)。或者等一段时间后再次点击才又可以正常展示,当展示静态的html页面就没有问题。

       后来发现原来是缓存的原因,设置:

        WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

       问题就解决了!

 

      原因分析:

      这是因为WebView默认的缓存模式是WebSettings.LOAD_DEFAULT:表示当有缓存且缓存未过期时用缓存,否则用网络资源,这种模式适用于展示静态html页面,而项目中展示的动态部分是通过网络请求json数据并展示,而缓存过期有一定时间,当再次请求时,用的是缓存,故再次展示失败,当改成: WebView.getSettings().

setCacheMode(WebSettings.LOAD_NO_CACHE);表示不用缓存--Don't use the cache, load from the network.问题就解决了

 

2.按back键可以回到上个网页

   @Override

   public boolean onKeyDown(int keyCode, KeyEvent event) {

   if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {

       mWebView.goBack();

       return true;

   }

 

3.设置UserAgentString

     webSettings.setUserAgentString("Mozilla/5.0 (Linux; Android 4.4; Nexus 4 Build/KRT16H) AppleWebKit/537.36(KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36");

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics