WebView 还原短网址问题

新手上路,请多包涵

我要用 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];
    }

请问是哪里出错了?

阅读 4.4k
1 个回答

还是先去搞清楚WebViewClient#onPageFinished(WebView, String)expandUrl(String)执行顺序吧。

需要知道的基础知识点:

  1. 代码都是逐行执行的

  2. 将耗时操作放到工作线程中异步执行,以免阻塞主线程

  3. 加载网页就是耗时操作,因此需要异步加载网页内容,加载成功之后通知主线程刷新页面

以上可知,return是在主线程中执行,而WebViewClient#onPageFinished(WebView, String)是在异步加载完成后才在主线程中执行的,因此return之前,它并没有被调用到(网页还没加载完成)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题