Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

199
Vistas
El sistema de seguimiento del modo oscuro de Android devuelve el modo incorrecto a menos que elimine la aplicación

Estoy implementando un cambio de modo oscuro dinámico en la aplicación en la que estoy trabajando y funciona muy bien para MODE_NIGHT_YES y para MODE_NIGHT_NO pero cuando configuro esto en MODE_NIGHT_FOLLOW_SYSTEM , aplica el tema pero no con el modo correcto seleccionado por el usuario en la configuración del teléfono.

Estoy configurando el tema llamando

 fun updateThemeSelection(mode: Int) { selectedMode = mode // Saving to shared preference to remember user choice setDefaultNightMode(mode) }

La forma en que verificamos si el sistema está configurado en modo oscuro o no es con esta función (también probé otras configuraciones)

 fun Configuration.isSystemInDarkMode(): Boolean { val defaultNightMode = AppCompatDelegate.getDefaultNightMode() if (defaultNightMode == AppCompatDelegate.MODE_NIGHT_YES) return true if (defaultNightMode == AppCompatDelegate.MODE_NIGHT_NO) return false return (uiMode and Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES }

Esto funciona bien, excepto por MODE_NIGHT_FOLLOW_SYSTEM que solo funciona después de forzar el cierre de la aplicación; en todos los demás casos, devuelve el último modo conocido.

Lo extraño es que si configuro android:configChanges="uiMode" en la actividad en el manifiesto fun onConfigurationChanged(newConfig: Configuration) se activa cuando alterno la configuración rápida del modo oscuro pero cuando isSystemInDarkMode() en la config que recibo el último modo conocido hasta que se elimina la aplicación...

Incluso depuré los bits de uiMode y Configuration.UI_MODE_NIGHT_MASK y devuelven los últimos valores.

También intenté usar setLocalNightMode(int) y applyDayNight() y recibí el mismo resultado.

No creo que sea un error específico del dispositivo porque lo ejecuto tanto en un emulador como en un OnePlus 7 pro, ambos con Android 11.

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda