android webview 重定向 多次load问题,解决webview 第二次调用loadUrl页面不刷新的问题...
时间: 2024-02-07 08:03:22 浏览: 340
当WebView第二次调用loadUrl时,页面不会刷新的原因可能是由于缓存导致的。因为WebView默认启用了缓存机制,当再次加载同一个URL时,会直接从缓存中读取,而不会重新请求服务器。
要解决这个问题,可以通过以下两种方式:
1.禁用WebView缓存
在调用loadUrl之前,可以通过设置WebSettings对象禁用缓存:
```java
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
```
这样每次加载URL时,都会强制从服务器重新获取数据,并禁用缓存。
2.强制刷新WebView
在WebView中添加一个刷新按钮,每次点击刷新按钮时,强制刷新WebView。具体实现如下:
```java
// 添加一个刷新按钮
Button refreshBtn = findViewById(R.id.refresh_btn);
refreshBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
webView.reload();
}
});
// 在WebViewClient中监听页面加载完成事件,并隐藏刷新按钮
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
refreshBtn.setVisibility(View.GONE);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
refreshBtn.setVisibility(View.VISIBLE);
}
});
```
当页面加载完成时,隐藏刷新按钮;当页面加载失败时,显示刷新按钮。这样就可以通过点击刷新按钮来强制刷新WebView了。
阅读全文