Agregar un retardo a Progress Dialog
Quiero hacer que aparezca un diálogo de progreso ficticio durante 2 o 3 segundos. En realidad no hará nada más que decir la detección. Tengo el código:
ProgressDialog dialog = ProgressDialog.show(this, "", "Detecting...", true); dialog.show(); dialog.dismiss();
Pero, ¿qué debo poner entre el show y la despedida para que aparezca el diálogo durante unos segundos? ¡Gracias!
- AsyncTask con un ProgressDialog y barra de progreso
- Android: Cómo ocultar el progreso de Seekbar?
- ¿Cómo implementar un ProgressDialog mientras que Activity solicita un SoapObject desde un Servicio Web?
- Diálogo de progreso para AsyncTask - Android
- Barra de progreso personalizada en Android?
- ¿Cómo utilizar AsyncTask para mostrar un ProgressDialog mientras realiza un trabajo de fondo en Android?
- No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare () dentro de AsyncTask para ProgressDialog
- Android ProgressDialog no funciona con la red móvil
- Vista del temporizador android (al igual que la barra de progreso) actualizando con colores en Lienzo
- No puedo ver el progreso de spinner en ProgressDialog en Lollipop
- Cancelar ProgressDialog y detener el hilo
- Reexcursión de exoplayer de Android cuando se realiza la búsqueda
- El diálogo de progreso no se muestra en la función onActivityResult
La forma correcta: no bloquea el hilo principal, por lo que la interfaz de usuario permanece activa:
dialog.show(); Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { dialog.dismiss(); } }, 3000); // 3000 milliseconds delay
progress.setProgress(100); Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { pdialog.dismiss(); }}, 3000);
Puedes hacer algo como esto:
new AsyncTask<Void, Void, Void> { ProgressDialog dialog = new ProgressDialog(MainActivity.this); @Override protected void onPreExecute() { super.onPreExecute(); dialog.setTitle("Please wait"); dialog.setMessage("Preparing resources..."); dialog.setCancelable(false); dialog.show(); } @Override protected Void doInBackground(Void... params) { try{ Thread.sleep(3000); } catch(Exception e) { e.printStackTrace(); } } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); if (dialog!=null && dialog.isShowing()) { dialog.dismiss(); } } }.execute();
No hay nada entre despedir y mostrar … el tiempo dependiendo de ti. Por ejemplo, el diálogo se mostrará antes del acceso al servidor y se descartará obtener resultados significa
dialog.show(); ServerCall(); dialog.close();
Si necesita medios de retardo vacíos entonces use CountDownTimer llamada entre ese.
También puede utilizar CountDownTimer
de Android que es mucho más eficiente que cualquier otra solución publicada y también soporta incendios en intervalos regulares a través de su método onTick()
.
Echa un vistazo a este ejemplo,
new CountDownTimer(3000, 1000) { public void onTick(long millisUntilFinished) { // You don't need anything here } public void onFinish() { dialog.dismiss(); } }.start();
- Set onClickListener para el elemento spinner?
- Android: para medir el tiempo entre los dos clics de botón