Comprensión de los Loopers en Android. En cuanto a las aplicaciones de Android. lähde: Nyame Bismark | Octubre de 2020

Cuando se trata de aplicaciones de Android, siempre queremos que los usuarios encuentren la interacción de la interfaz de usuario de nuestra aplicación.con suave y rápido. ¿Y qué hay de tener muchas tareas complicadas en la aplicación? ¿Tendremos estas tareas complejas realizadas en el hilo principal, o delegaremos estas tareas complejas a un ayudante u otro hilo para que lo haga? Estos son escenarios importantes en los que realmente debemos pensar como desarrolladores de Android. De forma predeterminada, cuando ejecuta una aplicación, se crea un subproceso que está vinculado al proceso y ese subproceso es el subproceso principal o el subproceso de la interfaz de usuario. No podemos o no nos atrevemos a perturbar este hilo, porque está enfocado en procesar el dibujo de vistas y sus interacciones.

Tener tareas complejas significa tener estas tareas delegadas a otro hilo o hilo de trabajo para que tenga una aplicación sin problemas sin encontrar este común ANR (La aplicación no responde) porque tiende a asustar al usuario.

POR QUÉ LOOPERS EN ESTA DISCUSIÓN

Al principio no podemos hablar del looper sin mencionarlo. Manipuladores y MessageQueue e hilo. Cuando tenemos que realizar muchas tareas, de hecho difíciles, primero podemos usar un hilo con un manejador; el hilo debe crearse y no viene con un looper por defecto. Puedes comprobarlo ejecutando Looper.myLooper () y volveremos objeto cero.

Entonces, primero tenemos que preparar el looper en el hilo, en otras palabras, inicializar el looper. Pero un hilo puede trabajar en segundo plano sin ningún looper halaoper, entonces, ¿por qué un looper? Sucede que cuando tiene muchas tareas que hacer, debe colocarlas en una cola de mensajes y la utilidad lo hará. El manejador obtiene el trabajo a procesar del usuario a la cola de mensajes a través de sendMessage (), post (Runnable r), postDelayed (Runnable r, long delayMillis) etc. del objeto controlador. Looper asume estas tareas o tareas que toman la forma Rinhabilita o mensajes ser hecho llamando Looper.loop (). En otras palabras, el bucle asume la responsabilidad de realizar tareas en la cola de mensajes. Cuando las tareas en la cola de mensajes están completas o inactivas, el looper puede detenerse llamando looper.quit () y resuelve el sistema, por lo que no tienes que preocuparte por eso.

este ilustrador looper es de https://i.stack.imgur.com/UHY9C.png

LA IMPORTANCIA DE LOS LOOPERS

Podríamos usar un hilo para realizar tareas en segundo plano, pero una cosa es que, cuando las tareas están completamente terminadas, el hilo muere y tienes que crear otro hilo una y otra vez si quieres ejecutar otra tarea en segundo plano. Esto no es eficiente y muchos subprocesos se almacenarán en la memoria e incluso pueden causarlo. falta de memoria excepción dependiendo de la plataforma.

Nota: los loopers mantienen vivo el hilo

Para usar el hilo y evitarlo falta de memoria con la excepción, podríamos crear un solo hilo e inicializar un bucleador en el hilo, así como crear un manejador y usar el manejador para realizar tareas a realizar en segundo plano sin inundar la memoria con muchos hilos muertos. En el siguiente ejemplo, encontrará un enlace a cómo se crean juntos Loopers, Handlers e Threads.

class LooperThread extends Thread {
public Handler mHandler;

public void run() {
Looper.prepare();

mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};

Looper.loop();
}
}

Sin pasar por esto, podríamos usar el uso HandlerThread además. Ya ha sido creado por Android y está listo para usar. Este handlerThread usa el concepto Looper para que pueda tomarlo y usarlo. Todo lo que tienes que hacer es crear un HandlerThread y ejecutarlo como un hilo normal. Luego, crea un controlador y pasa un objeto de bucle al controlador del constructor Hander, y está listo para comenzar. Ahora puede utilizar el controlador para realizar todas las tareas en segundo plano.

Nota: al crear un HandlerThread, asegúrese de cerrar el hilo usando el método quit, porque detendrá el looper.

//create the HandlerThread
HandlerThread handlerThread = new HandlerThread("my Handler Thread");
handlerThread.start();

//create the Handler
Handler handler = new Handler(handlerThread.getLooper());

//Use the Handler to send message or post runnables as you deem fit and
//all these works will be done in the background.

//close the handler thread when done.
//I mostly close it in the onDestroy method in activity or fragment
handlerThread.quit();

Gracias por leer. Para ayudar a otros, haga clic en ❤ y recomiende este artículo si lo encuentra útil. 😍

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *