我正在使用WebViewClient。我们是否应该看到onPageStarted()回调总是与shouldOverrideUrlLoading()回调配对?如果我在我的WebView中加载example.com,我们是否应该看到两个方法被回调?从文档:WebViewClient - onPageStarted()vs shouldOverrideUrlLoading()?
onPageStarted()
通知页面已经开始加载主机应用程序。这种方法对于每个主框架负载都被调用一次,所以带有iframe或框架集的页面将为主框架调用onPageStarted一次。这也意味着,当嵌入帧的内容改变时,不会调用onPageStarted,即点击目标是iframe的链接。
shouldOverrideUrlLoading()
给主机应用程序的机会,当一个新的URL是关于在当前的WebView要加载接管控制权。如果未提供WebViewClient,则默认情况下,WebView将要求活动管理器为URL选择适当的处理程序。如果提供了WebViewClient,则返回true表示主机应用程序处理url,而返回false表示当前的WebView处理该url。
我在每种方法中都放了一条日志语句,我发现它们并不总是配对在一起。他们不会在什么情况下?
感谢
http://developer.android.com/reference/android/webkit/WebViewClient.html
如果你在'shouldOverrideUrlLoading()'返回true,那么'onPageStarted()'不会被调用。除此之外,如果有两个请求背对背,onPageStart有时可能不会被调用,因此可能会阻止其中一个请求通过。不过,我对后者并不太自信。 – Jakar 2014-06-03 02:44:44
根据我在我的应用程序中得到的日志,可以按任何顺序调用'shouldOverrideUrlLoading'和'onPageStarted',这很令人困惑。我还没有发现在哪种情况下会发生这种情况。 – Stan 2016-01-01 20:20:01