El valor predeterminado Localese construye estáticamente en tiempo de ejecución para el proceso de su aplicación a partir de la configuración de propiedades del sistema, por lo que representará lo Localeseleccionado en ese dispositivo cuando se inició la aplicación . Por lo general, esto está bien, pero significa que si el usuario cambia su Localeconfiguración después de que se esté ejecutando el proceso de su aplicación, el valor de getDefaultLocale()probablemente no se actualizará de inmediato.
Si necesita atrapar eventos como este por alguna razón en su aplicación, puede intentar obtener los Localedisponibles del Configurationobjeto de recurso , es decir
Locale current = getResources().getConfiguration().locale;
Es posible que este valor se actualice más rápidamente después de un cambio de configuración si es necesario para su aplicación.
default()es una apuesta bastante segura, simplemente no la use para procesar (como dicen los documentos).