Я думаю, что для вашей задачи использование потока postDelayed
- это не тот путь.Используйте AsyncTask
Одна из возможных проблем заключается в том, что при текущем подходе вы просто приближаете время ожидания к 3 секундам, но с AsyncTask
вы можете продолжить сразу после завершения задачи.Асинхронные задачи в основном могут выполнять что-то в фоновом режиме, не блокируя пользовательский интерфейс.Однако вы также можете настроить их так, чтобы они отображали диалог прогресса, который будет блокировать любые взаимодействия пользователя с вашим приложением до завершения задачи.
Вот пример асинхронной задачи, которая выполняет что-то в фоновом режиме и показывает диалог прогресса:
public class ProgressTask extends AsyncTask<Void, Void, Boolean> {
/** progress dialog to show user that the backup is processing. */
private ProgressDialog dialog;
/** application context. */
private Activity activity;
public ProgressTask(Activity activity) {
this.activity = activity;
dialog = new ProgressDialog(context);
}
protected void onPreExecute() {
this.dialog.setMessage("Please wait");
this.dialog.show();
}
@Override
protected void onPostExecute(final Boolean success) {
if (dialog.isShowing()) {
dialog.dismiss();
}
}
protected Boolean doInBackground(final Void... args) {
// HERE GOES YOUR BACKGROUND WORK
}
}
Предлагаю вам разместить вашу отложенную работу вместо // HERE GOES YOUR BACKGROUND WORK
.