我正在尝试在另一个线程上加载我的webview,以便在请求加载后我可以在屏幕上添加一个按钮。
我这样做:
private class CustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
MyView myView = new myView();
myView.setUrl(url);
myView.setWebView(view);
new DownloadFilesTask().execute(myView);
return true;
}
}
private class DownloadFilesTask extends AsyncTask<MyView, Integer, Long> {
protected Long doInBackground(MyView... myView) {
long totalSize = 0;
MyView amyView = myView[0];
WebView view = amyView.getWebView();
String url = amyView.getUrl();
view.loadUrl(url);
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
}
protected void onPostExecute(Long result) {
rl.setVisibility(View.VISIBLE);
}
}
我收到错误:
Caused by: java.lang.RuntimeException: java.lang.Throwable: Warning: A WebView method was called on thread 'AsyncTask #2'. All
必须在UI线程上调用WebView方法。未来的版本 WebView可能不支持在其他线程上使用。
如何在加载网址后显示视图?
答案 0 :(得分:1)
您不应该在后台线程中加载WebView
;它需要加载到UI线程上。
我会为您的WebView
添加一个监听器,当网址加载完毕后,您可以添加按钮。
yourWebView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
// add your button here
}
});
yourWebView.loadUrl(url);