首页 文章

WebViewClient - onPageStarted()vs shouldOverrideUrlLoading()?

提问于
浏览
6

我正在使用WebViewClient . 我们是否应该看到onPageStarted()回调始终与shouldOverrideUrlLoading()回调配对?如果我在我的WebView中加载example.com,我们是否应该看到两个方法都被回调?来自文档:

onPageStarted()

通知主机应用程序页面已开始加载 . 对于每个主帧加载调用此方法一次,因此具有iframe或framesets的页面将为主帧调用onPageStarted一次 . 这也意味着当嵌入帧的内容发生变化时,即单击目标为iframe的链接时,不会调用onPageStarted .

shouldOverrideUrlLoading()

在当前WebView中加载新URL时,让主机应用程序有机会接管控件 . 如果未提供WebViewClient,则默认情况下WebView将要求活动管理器为URL选择正确的处理程序 . 如果提供了WebViewClient,则返回true表示主机应用程序处理url,而return false表示当前WebView处理url .

我在每个方法中都加了一个日志语句,我发现它们并不总是配对在一起 . 在什么情况下他们不会?

谢谢

http://developer.android.com/reference/android/webkit/WebViewClient.html

1 回答

  • 1

    我知道这个问题很老,但无论如何都要回答 . AFAIK,将为页面中的每个URL调用shouldOverrideUrlLoading(),其中onPageStart()将仅为页面的顶部URL调用 .

相关问题