我正在使用WebViewClient。我们是否总是应该看到与shouldOverrideUrlLoading()回调配对的onPageStarted()回调?如果我在我的WebView中加载example.com,我们是否应该看到两个方法都被回调?根据文档:
onPageStarted()
通知托管应用程序页面已开始加载。对于每个主框架加载,将调用一次此方法,因此具有iframe或frameset的页面将为主框架调用一次onPageStarted。这也意味着当嵌入式框架的内容更改时,即点击目标为iframe的链接时,不会调用onPageStarted。
shouldOverrideUrlLoading()
在当前WebView即将加载新URL时,使宿主应用程序有机会接管控制权。如果未提供WebViewClient,则默认情况下,WebView将要求Activity Manager选择适当的处理程序来处理URL。如果提供了WebViewClient,则返回true表示宿主应用程序处理URL,而返回false表示当前WebView处理URL。
我在每种方法中放置了一个日志语句,并且我看到它们并不总是成对出现。什么情况下它们不会成对出现?
谢谢
onPageStarted()
通知托管应用程序页面已开始加载。对于每个主框架加载,将调用一次此方法,因此具有iframe或frameset的页面将为主框架调用一次onPageStarted。这也意味着当嵌入式框架的内容更改时,即点击目标为iframe的链接时,不会调用onPageStarted。
shouldOverrideUrlLoading()
在当前WebView即将加载新URL时,使宿主应用程序有机会接管控制权。如果未提供WebViewClient,则默认情况下,WebView将要求Activity Manager选择适当的处理程序来处理URL。如果提供了WebViewClient,则返回true表示宿主应用程序处理URL,而返回false表示当前WebView处理URL。
我在每种方法中放置了一个日志语句,并且我看到它们并不总是成对出现。什么情况下它们不会成对出现?
谢谢
http://developer.android.com/reference/android/webkit/WebViewClient.html
shouldOverrideUrlLoading()
中返回true,则不会调用onPageStarted()
。除此之外,如果有两个连续的请求,可能会导致onPageStart
有时不被调用,从而可能阻止其中一个请求通过。虽然我对后者不是很自信。 - ReedshouldOverrideUrlLoading
和onPageStarted
可以以任意顺序调用,这非常令人困惑。我还没有找出发生这种情况的具体情形。 - Stan