gpt4 book ai didi

android - AsyncTask 不会进入 onPostExecute()

转载 作者:行者123 更新时间:2023-11-29 14:53:25 25 4
gpt4 key购买 nike

我正在使用 AsyncTaskWebView 中加载 div,同时显示 ProgressDialog。内容已加载并显示 ProgressDialog,但它不会消失,因为执行未进入 onPostExecute()。你能告诉我我做错了什么吗?

package xx.xxx.xxx;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.select.Elements;
import org.jsoup.nodes.Document;

import android.R.string;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class NewsActivity extends Activity {
private WebView wView;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.news_main);

new LoadNews().execute("");
}

private class LoadNews extends AsyncTask<String, Integer, String> {
private ProgressDialog Dialog = new ProgressDialog(NewsActivity.this);

@Override
protected String doInBackground(String... params) {
String url = "http://www.example.com/example";

Document doc;
try {
doc = Jsoup.connect(url).get();
Elements ele = doc.select("div#examplediv");

String html = ele.toString();
String mime = "text/html";
String encoding = "utf-8";

wView = (WebView)findViewById(R.id.wvNews);
wView.loadDataWithBaseURL(url, html, mime, encoding, null);
} catch (IOException e) {
e.printStackTrace();
}

return null;
}

protected void onPreExecute()
{
Dialog.setMessage("please wait...");
Dialog.show();
}

protected void onPostExecute(Void unused)
{
try
{
if(Dialog.isShowing())
{
Dialog.dismiss();
}
} catch(Exception e) {

}
}
}
}

最佳答案

实际上,您的AsyncTask 类实现是错误的..

你的代码有很多错误,

  1. 您正尝试在 doInBackground() 中访问 UI (WebView),这在 Android 中是不允许的。由于 doInBackground 在工作线程中运行,而您的 Activity Ui (WebView) 在 MainUI 线程中。

  2. onPostExecute() 的参数和doInBackground() 的返回类型不匹配。

请通过 AsyncTask来自 Android 开发人员的类(class)并了解其工作原理..

关于android - AsyncTask 不会进入 onPostExecute(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12006063/

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