【发布时间】:2015-10-04 06:22:58
【问题描述】:
我的 AsyncTask 中有一个方法,其中包含从 Parse.com 加载的数据 我想要的是让我的进度对话框显示,直到所有数据完全加载。
因此,如果加载数据需要 5 分钟,则进度对话框应显示该确切时间,直到所有数据完成加载。
我尝试了许多其他使用 AsyncTask 的不同方法,但仍然没有解决方案。
这很重要,谁能帮我解决这个问题
在我的 Main Activity 的 onCreate 中:
ProgressDialog progress = new ProgressDialog(this);
new MyTaskUpcomingShows(progress).execute();
我的带有进度对话框的 AsycTask:
class MyTaskUpcomingShows extends AsyncTask<Void, Void, Void> {
ProgressDialog progress;
public MyTaskUpcomingShows(ProgressDialog progress) {
this.progress = progress;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progress.setMessage("Loading...");
progress.show();
}
@Override
protected Void doInBackground(Void... arg0) {
parseQueryUpcomingShowsEventsTable();
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
progress.dismiss();
}
}
其他信息:
当我尝试以这种方式执行我的 AsyncTask 时,它显示但只是因为 Thread.sleep
private class BackgroundTask extends AsyncTask <Void, Void, Void> {
private ProgressDialog dialog;
public BackgroundTask(MyMainActivity activity) {
dialog = new ProgressDialog(activity);
}
@Override
protected void onPreExecute() {
dialog.setMessage("Doing something, please wait.");
dialog.show();
}
@Override
protected void onPostExecute(Void result) {
if (dialog.isShowing()) {
dialog.dismiss();
}
}
@Override
protected Void doInBackground(Void... params) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
}
问题是,如果我这样做,如果我删除了进度对话框,则不会显示 线程.sleep(5000)
此外,如果数据在 5 秒之前加载,进度对话框仍会旋转。它应该在加载数据后立即停止
【问题讨论】:
-
为什么要设置两次消息?? @casguapo
-
需要看progressdialog类
-
@Paudel 我也试过这种方式 MyTaskUpcomingShows task = new MyTaskUpcomingShows();任务.执行();它仍然没有工作......我想这是设置消息两次的错误,但我确实删除了它并尝试这种方式,它仍然没有工作
-
@Cardoso 你到底是什么意思?进度对话框仅在 onCreate 之外的两个地方进行操作,您正在查看“class MyTaskUpcomingShows extends AsyncTask”,然后使用“ProgressDialog progress = new ProgressDialog(this); progress.setMessage( "加载中..."); new MyTaskUpcomingShows(progress).execute();" ....所以它在其他任何地方都找不到
-
你所说的与需要查看进度对话框类无关,但我假设 ProgressDialog 是一个 DialogFragment 所以没关系抱歉
标签: android android-asynctask progressdialog