Actualizaciones de zona horaria mejores, más rápidas y más efectivas en Android

Publicado por Almaz Mingaleev – Ingeniera de software y Masha Khokhlova – Gerente de programas técnicos

¡Ha llegado nuevamente esa época del año en la que muchos de nosotros adelantamos nuestros relojes! Espera, tus dispositivos Android hicieron esto automáticamente, ¿verdad? Para los usuarios de Android que viven en muchos países, esto puede no ser una sorpresa. Por ejemplo, los gobiernos de EE. UU., la UE y el Reino Unido no han cambiado sus leyes horarias desde hace tiempo*, por lo que los usuarios se despiertan cada mañana para ver la hora correcta.

Pero ¿qué pasa cuando cambian las leyes del tiempo? Si miras a nivel global, los gobiernos pueden cambiar, y de hecho lo hacen, sus leyes de sincronización, a veces anualmente, y los dispositivos Android deben mantenerse al día para respaldar nuestra base global de usuarios.

Para implementar la legislación horaria de una región, los dispositivos Android deben seguir un conjunto de reglas codificadas. ¿Cuáles son estas reglas? Comencemos con por qué se necesitan reglas en primer lugar. Claramente, las 7 a. m. en Los Ángeles y las 7 a. m. en Londres no son la misma hora. Además, si estás en Londres y quieres saber la hora en Los Ángeles, necesitas saber cuántas horas restar, y esto no es fijo durante todo el año**. Así que, para saber la hora local (la hora que deben mostrar tus relojes) es conveniente tener un reloj de referencia en el que todos los habitantes del planeta estén de acuerdo. Este reloj lleva el nombre UTC, hora universal coordinada. La hora local de Londres durante el invierno coincide con UTC, durante el verano se calcula sumando una hora a UTC, generalmente denominada UTC+1. Para Los Ángeles, la hora local durante el verano es UTC-8 (8 horas de retraso, la diferencia UTC es -8 horas) y durante el invierno es correspondientemente UTC-7. Cuando una región pasa de un desplazamiento a otro, se denomina “transición”. La combinación de estas compensaciones y reglas cuando ocurre una transición (como “último domingo de marzo” o “primer domingo a partir del 8 de marzo”) define una zona horaria. Para algunos países, las reglas de zona horaria pueden ser muy simples y determinadas principalmente por la diferencia UTC elegida: “sin transiciones, no movemos nuestros relojes hacia adelante y hacia atrás”.

Los gobiernos pueden decidir cambiar la compensación del tiempo universal coordinado para las regiones, introducir nuevas regiones de zona horaria o cambiar el día en el que se produce la transición al horario de verano. Cuando los gobiernos hacen esto, las reglas de zona horaria en cada dispositivo Android deben actualizarse; de ​​lo contrario, el dispositivo Android seguirá siguiendo las reglas antiguas, lo que puede llevar a mostrar una hora local incorrecta a los usuarios de las áreas afectadas.

Android no es el único que necesita realizar un seguimiento de esta información. Afortunadamente, existe una base de datos respaldada por la IANA (Autoridad para la asignación de números en Internet) y mantenido por un pequeño grupo de voluntarios conocido como TZDB (Base de datos de zona horaria), que se utiliza como base para la detección de la hora local en la mayoría de los sistemas operativos modernos. El TZDB contiene la mayor parte de la información que necesita Android.

No hay un cronograma, pero TZDB normalmente lanza una nueva actualización entre 4 y 5 veces al año. El equipo de Android quiere lanzar actualizaciones que afecten a sus dispositivos lo antes posible.

¿Cómo llegan estos cambios a vuestros dispositivos?

    1. El gobierno firma una ley/decreto.

    2. Alguien informe a la IANA de estos cambios.

    3. Dependiendo del tiempo permitido y de los cambios anunciados por otros países, la IANA publica una nueva versión de TZDB.

    4. El equipo de Android incorpora la versión TZDB (junto con una pequeña cantidad de información adicional que obtenemos de proyectos relacionados y que derivamos nosotros mismos) a nuestro código base.

    5. Implementamos estas actualizaciones en sus dispositivos. La forma en que se implementa depende del tipo y antigüedad de su dispositivo Android.

        A. Muchos dispositivos móviles Android están cubiertos por el proyecto de Google Línea principallo que significa que Google envía actualizaciones directamente a sus dispositivos.

Como puede ver, hay algunos pasos. Aplicar, probar y publicar una actualización puede llevar semanas. Y no es sólo Android y otros sistemas operativos similares los que deben tomar medidas. Suele haber empresas de telecomunicaciones, bancos, aerolíneas y empresas de software que necesitan realizar cambios en sus sistemas y horarios. Los ciudadanos de un país deben estar informados de los cambios para que sepan qué esperar, especialmente si utilizan dispositivos más antiguos que tal vez no reciban las actualizaciones necesarias. Y todo esto lleva tiempo y puede causar problemas a innumerables personas si no se maneja bien. El alcance de las perturbaciones causadas por un cambio suele estar determinado por la claridad de la legislación y el plazo de notificación proporcionado por los gobiernos. Los voluntarios de TZDB son buenos para detectar cambios, pero es útil que los gobiernos informen directamente a la IANA, especialmente cuando las regiones exactas o las leyes existentes afectadas no están claras. Desafortunadamente, muchos de los cambios recientes de zona horaria se realizaron con aproximadamente un mes de anticipación o menos. Android tiene una serie de recomendaciones por mucho aviso que deba proporcionar. Otros sistemas operativos tienen recomendaciones similares.

Android está en constante evolución. Una de esas mejoras, Project Mainline, introducida en Android 10, ha marcado una gran diferencia en la forma en que actualizamos partes importantes del sistema operativo Android. Nos permite entregar componentes AOSP seleccionados directamente a través de Google Play, lo que hace que las actualizaciones sean más rápidas que una actualización OTA completa y reduce la duplicación de esfuerzos realizados por cada OEM.

Desde el principio, las reglas de zona horaria fueron un componente de Mainline, llamado Módulo de datos de zona horaria o tzdata. Esta integración nos ha permitido reaccionar más rápidamente que antes a los cambios de zona horaria exigidos por el gobierno. Sin embargo, a partir de 2023, las actualizaciones de tzdata todavía estaban incluidas con otros cambios principales, lo que a veces generaba complejidad en las pruebas y una implementación más lenta.

En 2023, realizamos más inversiones en la infraestructura de Mainline y desacoplamos el módulo tzdata de otros componentes. Gracias a este aislamiento, hemos ganado la capacidad de responder rápidamente a los cambios legislativos de zona horaria, y a menudo publicamos actualizaciones para los usuarios de Android fuera de nuestra cadencia de lanzamiento establecida. Además, este cambio significa que las actualizaciones de zona horaria pueden llegar a una cantidad mucho mayor de dispositivos Android, lo que garantiza que los usuarios de Android siempre vean la hora correcta.

Entonces, aunque es posible que tu teléfono Android no pueda restaurar el tiempo de sueño perdido, puedes estar seguro de que mostrará la hora exacta, gracias a los voluntarios y al equipo de Android.

¿Tienes curiosidad por el mundo en constante cambio de las zonas horarias? Explorar el Base de datos de zonas horarias de la IANA y descubre más sobre cómo Se gestionan el tiempo y las zonas horarias. en Android.

*Ha habido algunos cambios en Alaska en 2018-2019. ¡Esta es una publicación de blog, no documentación técnica!

**Porque EE. UU. y el Reino Unido aplican cambios de horario de verano en diferentes horarios locales y en diferentes días del año.

Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

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