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

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

2 ответа

Решение

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

Вы можете даже начать новую деятельность в AsyncTask's 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();

Когда вы запускаете длительный процесс на 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
}
Другие вопросы по тегам