gpt4 book ai didi

java - 使用异步任务在 webview 中加载 url 失败

转载 作者:行者123 更新时间:2023-12-01 11:36:42 24 4
gpt4 key购买 nike

我正在尝试在另一个线程上加载我的 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

WebView methods must be called on the UI thread. Future versions of WebView may not support use on other threads.

如何在 URL 加载后使 View 可见?

最佳答案

您不应该在后台线程中加载WebView;它需要在 UI 线程上加载。

我会向您的 WebView 添加一个监听器,当 URL 加载完成后,您可以添加按钮。

yourWebView.setWebViewClient(new WebViewClient() {

public void onPageFinished(WebView view, String url) {
// add your button here
}
});

yourWebView.loadUrl(url);

关于java - 使用异步任务在 webview 中加载 url 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29902928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com