android开发之webview开发中的一些问题总结。

随着HTML5的普及,Hybrid app的概念也越来越火,最近做的项目中直接跳转到webview的场景越来越多了,但是也出现好多问题,这里总结一下我开发过程中遇到的问题。


1.url重定向导致页面无法回退的问题。

这算是我遇到的最纠结的问题之一,重定向在这里就不过多解释了,网上也有一堆解决办法,但是都是治标不治本,比如通过判断请求响应码,自己维护一个List来存储加载的url,但当遇到一些特殊的重定向时,这个方法就没用了,最后的解决办法是在WebViewClient重写的方法shouldOverrideUrlLoading里返回false:


@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {	
     return false;
}


大家肯定对这个方法很熟悉,但是对于return值的含义,就犯糊涂了。

lz是这么理解的,return true的时候,表示页面需要我们自己来处理,一般情况下我们会在return true前加入load方法,如下:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {	
     view.load(url);
     return true;
}
但是wabview在每执行一次load(url)的时候就会在历史记录里追加一条url,重定向问题就出现在这。 如果return flase的话,就等于将url交由webview自动处理,这样点击返回的话,就不会有问题了。


2.有些js无法执行。

现在wap页功能越来越强大,加入了很多js插件,客户端webview需要开启对js的支持。


WebSettings webSettings = getSettings();
webSettings.setJavaScriptEnabled(true);// 支持js脚本
webSettings.setPluginState(PluginState.ON_DEMAND);//支持js插件
webSettings.setDomStorageEnabled(true);  //打开本地缓存提供JS调用

之前lz只设置了第一个,后面两个没有设置,导致js的插件不能使用,加上就好了。


3.重复进入同一个页面,有时出现页面图片无法展示,按钮无法点击。

被这个这个问题困扰好久,反复测试后,发现是退出webview时,会清空之前加载的页面数据,用的是网上总结的彻底清理的方法。参考:点击打开链接


这个方法会把页面缓存的js、图片、数据库等一些数据清掉,但是重新打开页面,再次加载时会默认去缓存中取,但是缓存已经被清理了,就会出现页面图片无法展示,按钮无法点击的问题。


解决办法就是在退出webview时,做如下处理:


mWebview.clearCache(true);//清除页面缓存
CookieSyncManager.createInstance(mContext);
cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();//清除所有cookie


先写这几个问题了,其他问题在下次再总结。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值