#android #sharedpreferences
Вопрос:
это мой первый вопрос о переполнении стека, поэтому приношу извинения, если формат вопросов (или предпосылка) необычен. Проблема здесь в том, что существует SharedPreference, который иногда / периодически возвращает true, когда он либо установлен как false, либо вообще отсутствует. Значение по умолчанию, переданное при чтении предпочтения, равно false.
Предпочтение отдается отображению уведомления пользователю, заданного удаленно его администратором. Приложение синхронизируется с сетью и извлекает настройки, записывая их в общие настройки. В этом случае значение было равно false, и значение false было значением по умолчанию при чтении, однако значение true возвращалось в одном или двух редких случаях, даже если значение false возвращалось незадолго до или вскоре после этого. Значение не могло быть изменено в промежутке между ними.
class PrefConfig {
SharedPreferences prefs;
public PrefConfig(Context context) {
prefs = PreferenceManager.getDefaultSharedPreferences(context);
}
public void setAllowUpdateNotifications(boolean allowUpdateNotifications) {
prefs.edit().putBoolean("allow_update_notification", allowUpdateNotifications).apply();
}
public boolean isAllowUpdateNotifications() {
return prefs.getBoolean("allow_update_notification", false);
}
}
Значение по умолчанию при получении предпочтения равно false, но при просмотре журналов пользователей иногда (редко) возвращается значение true, даже если подтверждено, что ранее оно не могло быть установлено как true.
Существуют ли какие-либо известные проблемы с возвратом значений по умолчанию из экземпляра SharedPreferences в Android ?
Обратите внимание, что в приведенном выше примере PrefConfig
имеется несколько экземпляров, и вместо фиксации используется apply. Это была линия расследования, предпринятая для того, чтобы предположить, что могут быть какие-то расовые условия. Также для некоторых из этих случаев использовались различные контексты действий, но после проверки документации это, по-видимому, не должно быть проблемой для getDefaultSharedPreferences
Спасибо.