У меня есть метод внутри моей AsyncTask, который содержит данные, которые он загружает из Parse.com. . Что бы я хотел, это для моего диалогового окна прогресса, отображаемого до тех пор, пока все данные не будут полностью загружены.Диалог прогресса AsyncTask не отображается, когда я запускаю свою активность
Поэтому, если данные занимают 5 минут для загрузки, то для этого точного времени должен отображаться индикатор прогресса, пока все данные не закончили загрузку.
Я пробовал много других методов использования AsyncTask и до сих пор не решил.
Это очень важно, кто может помочь мне решить эту проблему, пожалуйста,
В моей OnCreate Главная Actvity в:
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;
}
}
Дело в том, если я сделать это таким образом диалог прогресса не показывает если я удалю Thread.sleep (5000)
Также, если данные загружены до 5 секунд, диалог прогресса все еще вращается. Предполагается прекратить, как только данные загружены
почему вы заходящего сообщение 2 раза ?? @casguapo –
необходимо просмотреть класс progressdialog –
@Paudel Я пробовал это так же, как и MyTaskUpcomingShows task = new MyTaskUpcomingShows(); task.execute(); и это все еще не сработало ... Я предполагаю, что это ошибка, когда сообщение дважды, но я удалил это и попытался таким образом, и он все еще не работал. – Equivocal