Currículo: esta unidad desarrolla todos los saberes básicos del Bloque D – Desarrollo móvil correspondiente a 2ºESO. Además, se evalúan los criterios que puedes encontrar al final de esta página.
Tabla de contenidos
- 2.1. Ejemplos de IDEs de lenguajes de bloques para móviles
- 2.2. Programación orientada a eventos: características, ventajas e inconvenientes
- 2.3. Dependencia de eventos
- 2.4. Tipos de eventos
- 2.5. Descripción de eventos de E/S
- 2.6. Proyectos de desarrollo móvil
En este tema profundizamos en el interesante mundo del desarrollo móvil, ampliando los conocimientos adquiridos en 1º de ESO.
En esta etapa, veremos las características, ventajas e inconvenientes de la programación orientada a eventos, unos conocimientos imprescindibles para entender el diseño de aplicaciones interactivas.
A través de ejemplos prácticos, entenderemos cómo la dependencia y los tipos de eventos influyen en la funcionalidad de las apps.
2.1. Ejemplos de IDEs de lenguajes de bloques para móviles
Si bien el MIT App Inventor -que es el IDE más conocido- nos abre las puertas al mundo de la creación de aplicaciones móviles mediante bloques, tiene algunas limitaciones importantes. Así que este año os invito a explorar la diversidad y el potencial de otros entornos de desarrollo integrado (IDE) diseñados específicamente para potenciar nuestras habilidades técnicas en el desarrollo de aplicaciones móviles.

Mientras MIT App Inventor sigue siendo una herramienta fundamental en nuestro arsenal, nos aventuramos más allá para descubrir y experimentar con plataformas como Thunkable y AppyBuilder.
Estos IDEs, al igual que MIT App Inventor, utilizan el enfoque de programación visual por bloques, pero cada uno ofrece características únicas y componentes especializados que amplían nuestras posibilidades creativas y técnicas.
Thunkable, por ejemplo, nos permite no solo diseñar aplicaciones para Android sino también para iOS, lo que la convierte en una plataforma muy útil para la creación de aplicaciones móviles.

Por otro lado, AppyBuilder extiende las capacidades del MIT App Inventor con una serie de componentes avanzados y funciones de monetización, lo que nos permite crear aplicaciones útiles y también explorar modelos económicos que puedan sustentar nuestros proyectos.

Te invito a experimentar por tu cuenta con diferentes IDEs, así ganarás una comprensión más profunda de las posibilidades del desarrollo de aplicaciones móviles.
2.2. Programación orientada a eventos: características, ventajas e inconvenientes
El enfoque de la programación orientada a eventos, introducido el año pasado en el Tema 2, se extiende ahora para conocer su verdadero potencial, ofreciéndonos una visión más matizada de sus características, ventajas e inconvenientes.
Recuerda que en lugar de ver una aplicación como una secuencia lineal de comandos, la entendemos como un conjunto de respuestas a acciones específicas del usuario o del sistema.
Esta percepción nos lleva a considerar cada toque en la pantalla, deslizamiento o incluso la recepción de un mensaje, como eventos que pueden desencadenar acciones dentro de nuestras aplicaciones.
2.2.1. Características
Uno de los rasgos distintivos de esta manera de funcionar es su naturaleza reactiva (respuesta del sistema a acciones del usuario), pero tiene algunas otras muy importantes:
- Asincronía: los eventos pueden ocurrir en cualquier momento y la aplicación debe ser capaz de manejarlos.
- Encapsulamiento de comportamientos: cada evento puede tener asociado un conjunto específico de acciones, lo que facilita organizar el código y facilitar su mantenimiento.
- Interfaz intuitiva: al centrarse en los eventos generados por la interacción del usuario, se promueve el desarrollo de interfaces más amigables.
- Flexibilidad en el desarrollo: permite a los desarrolladores centrarse en las interacciones específicas que son importantes para la aplicación, haciendo más fácil la programación de características complejas.
2.2.2. Ventajas
La principal ventaja de la programación orientada a eventos es su capacidad para crear aplicaciones que son tanto intuitivas como eficientes. Al responder de manera específica a la interacción del usuario, se puede minimizar el uso de recursos innecesarios, mejorando el rendimiento de la aplicación y la satisfacción del usuario.

Además, las aplicaciones desarrolladas con este enfoque pueden ser más fáciles de escalar. Al separar la lógica de la aplicación en diferentes manejadores de eventos, se simplifica la adición de nuevas funcionalidades o la modificación de las existentes.
Por último, la capacidad de responder solo a eventos específicos reduce la necesidad de ejecutar procesos en segundo plano continuamente, lo que puede mejorar el rendimiento general de la aplicación y reducir el consumo de recursos del dispositivo.
2.2.3. Inconvenientes
Sin embargo, la programación orientada a eventos no está exenta de problemas.
Uno de sus inconvenientes es la complejidad que puede surgir al manejar múltiples eventos y asegurar que la aplicación responda de manera adecuada. La gestión de estados y la depuración de errores pueden volverse tareas arduas, especialmente en aplicaciones grandes.
En situaciones donde múltiples eventos pueden ocurrir casi simultáneamente o interactuar entre sí de maneras complejas -como pantallas en las que muchas fuentes actualizan los datos-, puede haber un riesgo de condiciones de carrera, donde el resultado final depende del orden en que se procesan los eventos. Esto puede llevar a comportamientos impredecibles de la aplicación.

Aunque la programación orientada a eventos puede mejorar el rendimiento al reducir la necesidad de procesos en segundo plano, manejar un alto volumen de eventos simultáneos puede ser problemático y requerir optimizaciones específicas para mantener una experiencia de usuario fluida.
2.3. Dependencia de eventos
La dependencia de eventos se refiere a la relación entre varios eventos dentro de una aplicación, donde la ocurrencia de un evento puede influir en la activación de uno o más eventos relacionados.
Este concepto es fundamental para crear aplicaciones dinámicas que respondan de manera inteligente a las entradas del usuario.
2.3.1. Explorando la dependencia de eventos

En aplicaciones complejas, un evento inicial, como el toque de un botón, puede desencadenar una secuencia de acciones, tales como la validación de datos, la consulta a una base de datos y la actualización de la interfaz de usuario. Cada paso en esta cadena depende del éxito del anterior, creando una cadena de eventos dependientes entre ellos.
La ejecución de ciertos eventos puede depender de condiciones específicas dentro de la aplicación, como el estado de conexión a internet o la disponibilidad de datos. Estos eventos condicionales añaden una capa de lógica que las aplicaciones deben manejar eficazmente.
2.3.2. Dos caras de la misma moneda
La gestión efectiva de la dependencia de eventos presenta tanto desafíos como oportunidades para los desarrolladores.
Por un lado, la dependencia entre eventos puede aumentar la complejidad del código, haciendo más difícil su mantenimiento.
Por otro lado, ofrece una oportunidad para diseñar experiencias de usuario altamente personalizadas.
2.3.3. La dependencia de eventos en TikTok
Para ilustrar el concepto de dependencia de eventos, vamos a tomar como referencia una aplicación móvil conocida por todos: TikTok.
Vamos a recorrer el proceso de publicación y visualización de un video. Este proceso involucra varios eventos dependientes que interactúan entre sí para ofrecer una experiencia de usuario muy dinámica.
- Inicio de sesión: el usuario inicia la aplicación y se identifica. Este es el primer evento, obligatorio para desbloquear las funcionalidades de la plataforma.
- Selección de video para publicar: una vez identificado, el usuario decide subir un video. El toque en el botón de subida inicia la secuencia de eventos para la publicación.
- Carga del video: el usuario selecciona un video de su galería o graba uno nuevo. La carga del video al servidor de TikTok es un evento que depende de la selección exitosa del video. Si la conexión a internet es insuficiente, podría desencadenarse un evento alternativo, como la notificación al usuario sobre el problema de conexión.
- Edición: con el video cargado, el usuario accede a herramientas de edición. La aplicación de filtros, música o efectos especiales son eventos que dependen de la carga exitosa del video. Cada selección desencadena nuevos eventos en la interfaz, actualizando la previsualización en tiempo real.
- Publicación: una vez editado el video, el usuario presiona «Publicar». Este evento desencadena la publicación final del video en la plataforma, haciéndolo visible para otros usuarios. La finalización exitosa de este evento podría, a su vez, desencadenar una notificación al usuario confirmando la publicación.
- Visualización por otros usuarios: una vez publicado, el video se convierte en parte del feed de otros usuarios. Cuando un usuario desliza hacia el video y este comienza a reproducirse, se desencadena un nuevo evento de visualización. Este evento puede influir en el algoritmo de recomendación de TikTok, afectando la visibilidad del video.
- Interacción con el video: la interacción de otros usuarios con el video (por ejemplo, me gusta, comentarios, compartir o guardar) son eventos que dependen de la visualización. Estas acciones pueden aumentar aún más la popularidad del video, influenciando su distribución en la plataforma.

Como has podido comprobar varios eventos en TikTok están intrínsecamente conectados, formando una cadena de dependencia que afecta tanto la experiencia del usuario que publica el video como la de aquellos que interactúan con él.
La programación orientada a eventos permite a TikTok manejar estas complejas interacciones de manera eficiente, creando una plataforma dinámica y altamente interactiva.
2.4. Tipos de eventos
Hemos citado hasta ahora un buen número de eventos para mejorar la comprensión de los conceptos, pero vamos a introducir una clasificación más detallada de los eventos en el desarrollo de aplicaciones móviles.
Esta clasificación nos permitirá ampliar nuestra capacidad para diseñar interacciones más ricas y variadas en nuestros proyectos de programación.
| Eventos de usuario: estos eventos son desencadenados por acciones directas del usuario, como toques, deslizamientos o gestos en la pantalla táctil. Por ejemplo: publicar un nuevo estado o foto. | |
| Eventos de sistema: diferentes de la entrada directa del usuario, estos eventos son generados por el sistema operativo del dispositivo -fundamentalmente Android e iOS-. Ejemplos: cambios en la orientación del dispositivo, notificaciones de batería baja, la recepción de mensajes, etc. | |
| Eventos de tiempo: los temporizadores y las alarmas son ejemplos de eventos basados en el tiempo, donde las acciones se desencadenan después de un intervalo específico o en un momento preciso. Estos eventos son necesarios para funciones como recordatorios o actualizaciones regulares de contenido. | |
| Eventos de sensores: como se introdujo en apartados anteriores, los sensores del dispositivo pueden generar eventos basados en cambios en el entorno físico, como la aceleración o la proximidad. Por ejemplo: ajustar el brillo de la pantalla basado en la luz ambiental cuando el usuario está viendo videos. | |
| Eventos de red: la conectividad de red y los cambios en el estado de la conexión generan eventos que las aplicaciones pueden utilizar para manejar las comunicaciones de red de manera eficiente, como iniciar o pausar descargas en respuesta a la disponibilidad de Wi-Fi. |
2.5. Descripción de eventos de E/S
La habilidad para diseñar los eventos de E/S (entrada y salida) es fundamental para crear aplicaciones que sean funcionales, intuitivas y agradables de usar.
2.5.1. Entradas: la interfaz con el usuario
Las entradas en una aplicación móvil abarcan todo lo que el usuario puede hacer para interactuar con la app. Esto incluye toques en la pantalla, gestos como pellizcar para hacer zoom, escribir texto e incluso lanzar comandos de voz. Cada una de estas acciones es capturada por la aplicación como un evento de entrada, que luego es procesado para producir una respuesta.

2.5.2. Salidas: la respuesta de la aplicación
Las salidas son las respuestas de la aplicación a las entradas del usuario o a cambios en el estado del sistema. Pueden ser visuales, como la actualización de la interfaz de usuario; auditivas, como la reproducción de un sonido o voz; o incluso táctiles, como la vibración del dispositivo en respuesta a una acción.

2.5.3. Eventos de E/S en una aplicación de compras
Vamos a realizar un recorrido por este tipo de eventos utilizando como base una aplicación de comercio electrónico:
| Evento de Entrada | Procesamiento del Evento | Evento de Salida |
| Búsqueda por voz del producto | Conversión de voz a texto y búsqueda en la base de datos | Muestra resultados de la búsqueda y anuncia el número de coincidencias |
| Selección de un producto | Recuperar detalles del producto seleccionado | Mostrar detalles del producto, incluyendo precio, descripción, y opciones de compra |
| Agregar producto al carrito | Verificar la disponibilidad del producto y actualizar el carrito de la compra | Actualización visual del carrito y confirmación sonora de que el producto ha sido agregado |
| Realizar el pago | Procesar la información de pago y finalizar la compra | Confirmación de la compra con un resumen visual y envío de un recibo por correo electrónico |
| Deslizar hacia abajo para actualizar la lista de productos | Actualizar los datos mostrados basados en el inventario más reciente | Actualización de la lista de productos con nuevos artículos o cambios de precio |
| Toque largo en un producto para añadir a favoritos | Añadir el producto a la lista de deseos del usuario | Indicación visual de que el producto ha sido guardado y feedback táctil |

La gestión efectiva de eventos de E/S requiere considerar la usabilidad y la accesibilidad, asegurando que las aplicaciones sean intuitivas para una amplia gama de usuarios. .
Un ejemplo de cómo los eventos de E/S pueden mejorar la interacción del usuario es el uso de la vibración del dispositivo como confirmación táctil en juegos móviles o al seleccionar opciones en aplicaciones, lo cual puede aumentar la inmersión del usuario sin necesidad de feedback visual o auditivo directo.
2.6. Proyectos de desarrollo móvil
En esta sección avanzaremos en la complejidad de las aplicaciones que comenzamos a construir el año pasado en 1º ESO:
- Thunkable 1: inicio de sesión.
- Thunkable 2: la interfaz de usuario.
- Thunkable 3: hola mundo.
- Thunkable 4: layouts.
- Thunkable 5: orígenes de datos.
- Thunkable 6: traductor.
- Thunkable 7: reconocimiento de imágenes.