Índice

Introducción

Cuando una aplicación pasa a primer plano, se ejecutan diferentes tratamientos y tareas en el UI Thread (User Interface Thread). Este thread es el corazón de la aplicación y se ocupa de toda la gestión de las interfaces y de las interacciones del usuario con la aplicación.

El UI Thread ejecutará todo el código presente en un componente de la aplicación (actividad, servicio, proveedor de contenidos, etc.). Por lo tanto, es muy importante que para la experiencia del usuario este thread no tenga ninguna operación pesada y que nunca se bloquee (lo que bloquearía al usuario en su interacción con la aplicación).

Para ilustrar este principio, cree un proyecto compuesto por dos botones que simulen el bloqueo del UI Thread.

Para simular el bloqueo del UI Thread, asocie un listener al clic de un botón, que realizará una acción de pausa en el UI Thread (método sleep).

final Button blockUiThread = (Button) 
findViewById(R.id.blockUiThreadBtn); 
blockUiThread.setOnClickListener(new OnClickListener() { 
    @Override  
    public void onClick(View v) {  
         try { 
             Thread.sleep(15000L); 
         } catch (InterruptedException e) { 
             e.printStackTrace(); 
         } 
    } 
});

Cuando el usuario haga clic en el primer botón ...