Webview 中WebViewClient遇到的问题
官方文档是这样解析shouldOverrideUrlLoading的:
ublic boolean shouldOverrideUrlLoading (WebView view, String url)
Since: API Level 1
Give the host application a chance to take over the control when a new url is about to be loaded in the current WebView. If WebViewClient is not provided, by default WebView will ask Activity Manager to choose the proper handler for the url. If WebViewClient is provided, return true means the host application handles the url, while return false means the current WebView handles the url.
Parameters
viewThe WebView that is initiating the callback.
urlThe url to be loaded.
Returns
True if the host application wants to leave the current WebView and handle the url itself, otherwise return false.
理解起来是开发者可以自己控制新的URL处理方式,听起来貌似很很方便。你也许会和我一样想这个function每次会在onPageStarted之前都会调用它,那么在我们开发中,若发现有些URL自己可以来处理,而不是用webview像平常的url那样解释出来,就可以在这个function中处理,可当你在开发的时候你就发现事实并不是你想象的那样,shouldOverrideUrlLoading并不是每次都在onPageStarted之前开始调用的,就是说一个新的URL不是每次都经过shouldOverrideUrlLoading的,只有在调用webview.loadURL的时候才会调用,那你怎么办呢?若你真的想自己处理一些特殊的URL,你可以在onPageStarted中处理,因为onPageStarted每次都会调用,但是你怎样让viewView停止解释你自己已经处理的URL呢,方法就是在onPageStarted中检测到url为你想要处理的之后就调用webview.stoploading的funciton来停止webview的加载。