webview跳转页面的返回操作不成功,死循环问题
2016-07-24 12:44
906 查看
项目中需要用webView加载第三方的web页面,其中有个页面有重定向到另外一个页面,造成了页面无法后退,后退到上个页面,又重定向到之前界面,重定向源页面也被加入到浏览记录中,刚开始想查找api中找个编辑历史记录的方法,把找重定向源页面从历史记录中删除,半天找不到,只有clearHistory方法。
后用浏览器访问该网站,则后退正常,会退到重定向页面。用微信内置WebView ,QQ内置WebView打开该页面后退也正常,发现重定向源页面也被加入到浏览记录中。
纠结这个问题困扰了两三天,各大网站找解决方案也找不到一个完美的方法,大部分都是新建集合另外记录下浏览记录,后退时加载集合里的记录的页面。而不使用Webview.goBack(),在stackOverflow上找也大都是这些。感觉这些方法不完美,没有从根本上解决问题。总感觉还有更好的方法,一个偶然情况下发现了解决方案。
在使用WebView的时候,我们一般都会设置WebViewClient ,重写shouldOverrideUrlLoading方法,让webView加载点击url,并return true。因为不这样设置,点击页面上的链接弹出浏览器
[java] view
plaincopy
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
而造成重定向源页面被加入历史记录貌似恰恰是这个设置。而让人想不到的解决方案竟是下面这段代码
[java] view
plaincopy
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
之前我以为这样设置跟没设置WebViewClient效果一样,也会点连接弹浏览器。没想到竟是完全不一样的,这样设置点连接会在当前webView打开,而且重定向页面后退也没问题
后用浏览器访问该网站,则后退正常,会退到重定向页面。用微信内置WebView ,QQ内置WebView打开该页面后退也正常,发现重定向源页面也被加入到浏览记录中。
纠结这个问题困扰了两三天,各大网站找解决方案也找不到一个完美的方法,大部分都是新建集合另外记录下浏览记录,后退时加载集合里的记录的页面。而不使用Webview.goBack(),在stackOverflow上找也大都是这些。感觉这些方法不完美,没有从根本上解决问题。总感觉还有更好的方法,一个偶然情况下发现了解决方案。
在使用WebView的时候,我们一般都会设置WebViewClient ,重写shouldOverrideUrlLoading方法,让webView加载点击url,并return true。因为不这样设置,点击页面上的链接弹出浏览器
[java] view
plaincopy
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
而造成重定向源页面被加入历史记录貌似恰恰是这个设置。而让人想不到的解决方案竟是下面这段代码
[java] view
plaincopy
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
之前我以为这样设置跟没设置WebViewClient效果一样,也会点连接弹浏览器。没想到竟是完全不一样的,这样设置点连接会在当前webView打开,而且重定向页面后退也没问题
相关文章推荐
- AudioManager 的使用
- 做Android开发 需要掌握哪些知识
- 16-07-24 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that
- Android开发代号和对应API等级
- 【Android】子Fragment获取父Fragment
- Android应用程序获取system权限
- Android 4.4系统下LayoutParam使用
- android MVVM开发模式(二)
- 【Android】 获取当前系统语言
- Android获取屏幕尺寸的方法
- 09_Mybatis开发Dao方法——mapper代理开发规范
- 【Unity3D】AR应用中,关于东南西北方位的判断。
- java实现获取微信公众服务号消息
- 新建android项目时,ActionBarActivity找不到
- bitmap 多级缓存
- Android使用Messenger实现进程间双向通信
- WaitForSingleObject函数的使用
- Android 下关于按键外部监视书写及布局
- Android重复闹钟(每天)的实现
- Android SQLite