Как отобразить диалоговое окно прогресса перед началом активности в 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
}