gpt4 book ai didi

Android AsyncTask onPreExecute 未被不确定地调用

转载 作者:行者123 更新时间:2023-11-30 04:04:36 27 4
gpt4 key购买 nike

我有一个 AsyncTask,它应该在通过 Internet 上传一些内容时显示进度条。有时它就像一个魅力,有时它不显示任何进度条。这是代码:

public class Upload extends AsyncTask<Void, Void, Void> {

private ProgressDialog dialog = new ProgressDialog(Activity.this);

protected void onPreExecute() {
dialog = ProgressDialog.show(Activity.this, "wait...", "", true, true);
}
@Override
protected Void doInBackground(Void... params) {
//upload stuff
return null;
}

protected void onPostExecute(Void result) {

try {
if (dialog.isShowing())
dialog.dismiss();
dialog = null;
} catch (Exception e) {
// nothing
}
Intent next = new Intent(getApplicationContext(), SecondActivity.class);
startActivity(next);
}
}
}

doInBackground 和 onPostExecute 始终有效,有时它们一起工作就像一个魅力。但有时,上传时没有进度条。这是竞争条件吗?我不这么认为,但我找不到任何解释。

最佳答案

您在类里面创建了两次对象。 ProgressDialog.show 已经返回一个创建的 ProgressDialog 对象,但是您首先在顶部实例化了它。 ProgressDialog 应实例化一次,因此请尝试删除顶部的实例化并重试,如下所示:

private ProgressDialog dialog;

protected void onPreExecute() {
dialog = ProgressDialog.show(Activity.this, "wait...", "", true, true);
}

关于Android AsyncTask onPreExecute 未被不确定地调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11943133/

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