Значение по умолчанию Localeсоздается статически во время выполнения процесса приложения из параметров системных свойств, поэтому оно будет отображать Localeвыбранное на этом устройстве при запуске приложения . Как правило, это нормально, но это означает, что если пользователь изменит свои Localeнастройки после запуска процесса приложения, значение, getDefaultLocale()вероятно, не будет немедленно обновлено.
Если по какой-то причине вам нужно перехватывать подобные события в вашем приложении, вы можете вместо этого попытаться получить Localeдоступное из Configurationобъекта ресурса , т.е.
Locale current = getResources().getConfiguration().locale;
Вы можете обнаружить, что это значение обновляется быстрее после изменения настроек, если это необходимо для вашего приложения.
default()довольно безопасная ставка, просто не используйте ее для обработки (как говорят в документации).