¿Cómo puedo esperar 10 segundos sin bloquear la interfaz de usuario de la aplicación en android

Estoy atascado con un problema, quiero esperar 10 segundos porque quiero que mi aplicación para iniciar el código a continuación después de 10 seg pero sin detener a esa persona de hacer clic en cualquier otra cosa en la aplicación ( sin llamar a Thread.sleep(); ).

 try {  Log.v("msg", "WAIT CheckFrequencyRun");  Thread.sleep(10000); // giving time to connect to wifi  } catch (InterruptedException e) {  // TODO Auto-generated catch block  e.printStackTrace(); } //if no network if(wifiManager.getConnectionInfo().getNetworkId()==-1){  //stop wifi  wifiManager.setWifiEnabled(false);  Log.v("msg", "no connection");  handler.postDelayed(this, checkInterval); } //else connection else{  Log.v("msg", "connection");  onDestroy(); } 

Usted nunca quiere llamar a thread.sleep() en el hilo de la UI ya que suena como usted ha descubierto. Esto congela la UI y siempre es una mala cosa que hacer. Puede usar un Thread independiente y postDelayed

Esta respuesta SO muestra cómo hacerlo, así como varias otras opciones

Entrenador de animales

TimerTask

Usted puede mirar estos y ver cuál funcionará mejor para su situación particular

Puede utilizar esto:

 Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { // Actions to do after 10 seconds } }, 10000); 

Echa un vistazo a estas preguntas, que parecen muy similares:

  • ¿Cómo hacer que el código se detenga por un par de segundos en android?
  • Android: Espera () el hilo principal mientras un diálogo recibe entrada en un hilo separado
  • Android: esperando una acción
  • Espera un momento – Android

Hacer esto en un nuevo hilo (separarlo del hilo principal)

  new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).run(); 

1 con el manipulador:

 handler.sendEmptyMessageDelayed(1, 10000); } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { //your code } } }; 
  • ¿Cómo encontrar el almacenamiento interno (Almacenamiento predeterminado del teléfono) y el almacenamiento externo (tarjeta SD extraíble) en android?
  • DialogFragment.show cuelga la aplicación
  • Android: Bug con ThreadSafeClientConnManager descargar imágenes
  • Eclipse se bloquea después de algún tiempo con error de java
  • ¿Cambia el Ancho y la Altura con orientación?
  • Mejor práctica de Java: ¿buscadores anidados? O delegados?
  • Android ListView personalizado no puede hacer clic en los elementos
  • Detección de configuración de compilación (depuración o liberación) dentro de ant script
  • En RxJava, cómo reintentar / reanudar en caso de error, en lugar de completar el observable
  • Cómo guardar 2 cadenas en una aplicación para Android?
  • ¿Cómo calcular el usuario activo en Mobile App Analytics?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.