在我的应用中,我有一个
WebView
,可以加载来自互联网的任何URL。由于网络缓慢,有时页面需要很长时间才能加载,用户只会看到一个空白屏幕。
我想在WebView
加载时显示一个ProgressBar
,并在WebView
完全加载后隐藏ProgessBar
。
我知道如何使用ProgressBar
和AsyncTask
,但这是我的问题所在。
这是我用来加载WebView
的代码。
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new HelloWebViewClient());
mWebView.loadUrl(web_URL);
这是我的自定义 WebViewClient
类
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
现在,如果我想使用 AsyncTask
显示 ProgressBar
,那么我想我必须将加载 URL 的代码放入 AsyncTask
中的 doInBackground()
函数中,并通过 onProgressUpdate()
函数显示进度。
但是,我该如何在 doInBackground()
中加载URL呢?因为 doInBackground()
在 非 UI 线程 上运行,我无法在其内部使用 mWebView.loadUrl(web_URL)
。
有什么建议吗?我是否忽略了一些明显的东西?请指导我。