Hea*_*ers 4 android webview webviewclient
当我打电话时,WebView#loadUrl我希望我只能打一个WebViewClient#onPageFinished电话而不WebViewClient#shouldOverrideUrlLoading打电话.但是,我得到一个WebViewClient#shouldOverrideUrlLoading(我通过始终调用WebView#loadUrl并返回true来实现)然后WebViewClient#onPageFinished使用相同的URL 进行两次调用.
我正在加载的页面使用了很多ajax请求.ajax请求是否会调用WebViewClient?我的页面中没有任何meta-refreshes.
这非常令人沮丧.难道我做错了什么?
Hea*_*ers 12
这是我开始讨论该主题的谷歌小组讨论的交叉帖子.
我做了更多的研究,我想我理解正在发生的一切.
这是我的WebViewClient:
public class MyWebViewClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
System.out.println("onPageStarted: " + url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url) {
System.out.println("shouldOverrideUrlLoading: " + url);
webView.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView webView, String url) {
System.out.println("onPageFinished: " + url);
}
}
Run Code Online (Sandbox Code Playgroud)
我的服务器有以下URL重定向:
http://example.com/resource -> http://example.com/user-name/resource
http://example.com/logout.jsp -> http://example.com/login/logout
http://example.com/login/logout -> http://example.com/login
Run Code Online (Sandbox Code Playgroud)
这些URL是我无法控制的服务器的一部分,因此我只需处理该行为.
这是加载的输出 http://example.com/resource
onPageStarted: http://example.com/resource
onPageStarted: http://example.com/user-name/resource
shouldOverrideUrlLoading: http://example.com/user-name/resource
onPageFinished: hhttp://example.com/user-name/resource
Run Code Online (Sandbox Code Playgroud)
在这一点上,我WebView有空白内容.我必须等到第二天onPageFinished才能抓住我的内容.
onPageStarted: http://example.coms/user-name/resource
onPageFinished: http://example.com/user-name/resource
Run Code Online (Sandbox Code Playgroud)
这是加载的输出 http://example.com/logout.jsp
onPageStarted: http://example.com/logout.jsp
onPageStarted: http://example.com/login/logout
shouldOverrideUrlLoading: http://example.com/login/logout
onPageFinished: http://example.com/login/logout
onPageStarted: http://example.com/login/logout
onPageStarted: http://example.com/login
shouldOverrideUrlLoading: http://example.com/login
onPageFinished: http://example.com/login
Run Code Online (Sandbox Code Playgroud)
再次,在这一点上,我WebView有一个空白页面.我必须等到3号onPageFinished才能获得我的内容WebView.
onPageStarted: http://example.com/login
onPageFinished: http://example.com/login
Run Code Online (Sandbox Code Playgroud)
根据文档,我不指望这种行为.请注意,onPageStarteds和onPageFinisheds的数量不平衡.我特别不喜欢onPageFinished用重定向的URL调用它,但WebView它不包含我的内容.我知道这种行为可能是不可改变的,但至少应记录这种意外行为.
| 归档时间: |
|
| 查看次数: |
11095 次 |
| 最近记录: |