Подтвердить что ты не робот

Как отобразить диалог прогресса перед началом работы в Android?

Как вы показываете диалог прогресса перед началом действия (т.е. когда активность загружается некоторыми данными) в Android?

4b9b3361

Ответ 1

Вы должны загружать данные в AsyncTask и обновлять свой интерфейс, когда данные заканчиваются загрузкой.

Вы даже можете начать новое действие в своем методе AsyncTask onPostExecute().

В частности, вам понадобится новый класс, который расширяет AsyncTask:

public class MyTask extends AsyncTask<Void, Void, Void> {
  public MyTask(ProgressDialog progress) {
    this.progress = progress;
  }

  public void onPreExecute() {
    progress.show();
  }

  public void doInBackground(Void... unused) {
    ... do your loading here ...
  }

  public void onPostExecute(Void unused) {
    progress.dismiss();
  }
}

Затем в вашей деятельности вы будете делать:

ProgressDialog progress = new ProgressDialog(this);
progress.setMessage("Loading...");
new MyTask(progress).execute();

Ответ 2

Когда вы начинаете длительный процесс на Android, всегда рекомендуется делать это в другом потоке. Затем вы можете использовать поток пользовательского интерфейса для отображения диалогового окна прогресса. Вы не можете отобразить диалог выполнения в том же (UI) потоке, в котором выполняется процесс.

Для запуска процесса выполните следующие действия.

pd = ProgressDialog.show(this, "Synchronizing data", "Please wait...");
Thread t = new Thread(this);
t.start();

Для этого ваша деятельность должна внедрять Runnable следующим образом

public class SyncDataActivity extends Activity implements Runnable

И, наконец, метод выполнения долговременного процесса

@Override
public void run() {
      //your code here
}