Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

207
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!