Buscar..


Ejemplo de hilo con su descripción

Al iniciar una aplicación se ejecuta primer hilo principal. Este hilo principal maneja todo el concepto de UI de la aplicación. Si queremos ejecutar durante mucho tiempo la tarea en la que no necesitamos la interfaz de usuario, usamos un hilo para ejecutar esa tarea en segundo plano.

Aquí está el ejemplo de Hilo que describe golpe:

new Thread(new Runnable() {
    public void run() {
        for(int i = 1; i < 5;i++) {  
            System.out.println(i);  
        }
    }
}).start();

Podemos crear un hilo creando el objeto de Hilo que tiene el método Thread.run() para ejecutar el hilo. Aquí, el método start() llama al método run() .

También podemos ejecutar los múltiples subprocesos de forma independiente, lo que se conoce como MultiThreading. Este subproceso también tiene la funcionalidad de suspensión por la cual el subproceso que se está ejecutando actualmente está en suspensión (detener temporalmente la ejecución) durante el número de tiempo especificado. Pero sleep lanza la InterruptedException Por lo tanto, tenemos que manejarlo usando try / catch como este.

try{Thread.sleep(500);}catch(InterruptedException e){System.out.println(e);}

Actualización de la interfaz de usuario desde un hilo de fondo

Es común utilizar un subproceso de fondo para realizar operaciones de red o tareas de larga ejecución, y luego actualizar la interfaz de usuario con los resultados cuando sea necesario.

Esto plantea un problema, ya que solo el hilo principal puede actualizar la interfaz de usuario.

La solución es usar el método runOnUiThread() , ya que le permite iniciar la ejecución de código en el subproceso de la interfaz de usuario desde un subproceso de fondo.

En este sencillo ejemplo, un Thread se inicia cuando se crea la Actividad, se ejecuta hasta que el número mágico de 42 se genera aleatoriamente, y luego utiliza el método runOnUiThread() para actualizar la interfaz de usuario una vez que se cumple esta condición.

public class MainActivity extends AppCompatActivity {

    TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = (TextView) findViewById(R.id.my_text_view);

        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    //do stuff....
                    Random r = new Random();
                    if (r.nextInt(100) == 42) {
                       break;
                    }
                }

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mTextView.setText("Ready Player One");
                    }
                });
            }
        }).start();
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow