Как вы показываете диалог прогресса перед началом действия (т.е. когда активность загружается некоторыми данными) в Android?
Как отобразить диалог прогресса перед началом работы в Android?
Ответ 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
}