我要用 expandUrl()
来还原短网址,finalURL[0] = webView.getUrl();
这里可以正常获取还原后的网址,但是到了 return finalURL[0];
却是空的,没有数据返回。
private String expandUrl(String shortUrl) {
final String[] finalURL = {""};
webView.loadUrl(shortUrl);
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
finalURL[0] = webView.getUrl();
}
});
return finalURL[0];
}
请问是哪里出错了?
需要知道的基础知识点:
代码都是逐行执行的
将耗时操作放到工作线程中异步执行,以免阻塞主线程
加载网页就是耗时操作,因此需要异步加载网页内容,加载成功之后通知主线程刷新页面
以上可知,
return
是在主线程中执行,而WebViewClient#onPageFinished(WebView, String)
是在异步加载完成后才在主线程中执行的,因此return
之前,它并没有被调用到(网页还没加载完成)。