Usando Anko para ejecutar tareas en segundo plano con Kotlin en Android (KDA 09)
Antonio Leiva

Anko es una librería de Kotlin para Android que sirve para muchas cosas. Su principal característica es la de crear vistas por código mediante un DSL.

Aunque esto puede ser muy interesante, la verdad es que yo me apaño muy bien con los XML tras tanto tiempo. Así que prácticamente ni he probado esto.

Pero sí que tiene otras funciones muy útiles, y la que te cuento hoy es especialmente cómoda.

Si quieres aprender cuál es la situación de Kotlin en el mercado, por qué debes aprenderlo y los primeros pasos para que veas lo fácil que es, he preparado un training gratuito de hora y media al que puedes unirte haciendo click aquí.

Training Revienta tu productividad en Android con Kotlin

Anko para ejecutar tareas en segundo plano

El tema de salirnos del hilo principal para ejecutar operaciones que puedan bloquear es muy recurrente en Android.

Existen miles de alternativas, desde varias ofrecidas por el framework (como las AsyncTask o los Loader) hasta librerías. Algunos incluso utilizan RxJava para esto.

Todas son opciones muy válidas, y todas tienen sus pros y sus contras.

Pero la mayoría de ellas pecan de complejas para lo que es una tarea tan simple como salirnos del hilo principal para  hacer algo.

No voy a juzgar las soluciones, porque la mayoría de ellas tienen problemas inherentes al lenguaje.

Anko se aprovecha del potencial de Kotlin para ofrecernos una solución fácil y ligera.

Añade la dependencia al proyecto

Lo primero que tendrás que hacer es incluir la dependencia.

Como Anko hace muchas cosas, el tamaño de la librería se les fue de las manos. Así que llegó un momento que decidieron partirla.

Para esto sólo necesitas añadir el siguiente import:

compile 'org.jetbrains.anko:anko-common:0.9'

Ejecuta la tarea en segundo plano

Si recuerdas, en un artículo anterior, hicimos una función doAsync muy básica, que ejecutaba operaciones en segundo plano. Anko es capaz de utilizar el contexto de ejecución para funcionar de una forma u otra. Después veremos un ejemplo.

Por ahora, el código es muy similar:

doAsync {
    var result = runLongTask()
}

¿Pero cómo volvemos al hilo principal?

Volviendo al hilo principal

También is muy sencillo. Simplemente hay que hacer un bloque uiThread dentro, y esto se ejecutará en el hilo principal.

doAsync {
    var result = runLongTask()
    uiThread {
        toast(result)
    }
}

toast() es otra función muy útil que nos provee Anko, y que simplifica la forma de mostrar toasts en nuestra App.

Pero la parte importante es la de uiThread. Esto se ejecuta en el hilo principal.

Pero es que además, si el doAsync fue llamado por una Activity, el código de uiThread no se ejecutará si la Activity está muriendo (isFinishing devuelve true ). De esta forma nos evitamos un error muy típico que suele ocurrir con las AsyncTask o cualquier otro callback que no preste atención al ciclo de vida de la actividad.

Conclusión

Como ves, Anko nos da una serie de utilidades que nos van a simplificar aún más la vida en Android. Hay muchas otras, como creación de diálogos o manejo de base de datos, que es posible que veamos en siguientes artículos.

Si todo esto te apasiona tanto como a mí, te animo a que te apuntes a mi training gratuito donde te contaré todo lo que necesitas para aprender a crear tus Apps Android en Kotlin desde cero.

Quizá también te interese…

Kotlin 1.5.0 : Las 5 novedades que puedes empezar a usar hoy

Kotlin 1.5.0 : Las 5 novedades que puedes empezar a usar hoy

Kotlin 1.5.0 ya está aquí, y como siempre trae una serie de novedades que te van a interesar muchísimo. Cabe destacar que a partir de ahora, de acuerdo las nuevas versiones de Kotlin se lanzarán cada 6 meses, independientemente de las nuevas funcionalidades que...

¿Qué es Kotlin y para qué sirve?

¿Qué es Kotlin y para qué sirve?

Kotlin es un lenguaje de programación de código abierto creado por JetBrains que se ha popularizado gracias a que se puede utilizar para programar aplicaciones Android. Pero si has llegado hasta aquí pensando que Kotlin solo se puede usar en Android, lo que te voy a...

2 formas de recolectar Flows en la UI que SÍ funcionan

2 formas de recolectar Flows en la UI que SÍ funcionan

En la serie de artículos sobre Programación Reactiva con Flow hemos visto muchos conceptos, y hemos aprendido cómo aplicarlos al desarrollo Android. Pero hay algo que no hemos hecho del todo bien. Esto es la recolección de Flows desde la Activity (o el Fragment, en...

0 comentarios

Enviar un comentario

Los datos personales que proporciones a través de este formulario quedarán registrados en un fichero de Antonio Leiva Gordillo, con el fin de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento de la parte interesada. Si no se acepta, no podrás comentar en este blog. Los datos que proporciona solo se utilizan para evitar el correo no deseado y no se usarán para nada más. Puede ejercer los derechos de acceso, rectificación, cancelación y oposición en contacto@devexperto.com.

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

Acepto la política de privacidad *