Intereting Posts
Geofences недоступен и как его обрабатывать V7 RecyclerView NullPointerException AccessibilityDelegateCompat.getBridge () Как ссылаться или «находить» функцию предпочтения? Как проверить WiFi – это пройти через вход в веб-страницу? Android: сохраните MediaPlayer во время обновления ориентации экрана Activity Как создать фильтр намерения для потоковой передачи MP3-файла? Локализованные активы на Android Почему getApplicationContext (). SetTheme () в Activity не работает? Пользовательская проблема рендеринга ViewPager на некоторых устройствах: Настройка привязки Android для Android alignmentParentTop Android установил последнее модифицированное время для файла Как фрагменты влияют на активность «единая, целенаправленная вещь, которую пользователь может делать»? Как предотвратить использование утеченного хранилища ключей и пароля? Ошибка IAB для Android. RPC: S-7 AEC-0 Android: как запросить SQLiteDatabase с аргументами выбора не строки?

Когда будут применяться действия SharedPreferences () и commit ()?

Я использую SharedPreferences для сохранения данных пользователя в своем приложении. Я знаю разницу между методами commit() и apply() , но я заметил, что commit() возвращает true, если новые значения были успешно записаны в постоянное хранилище, а apply() – нет.

Каковы причины, по которым метод commit() может возвращать false или метод apply() для отказа?

Давайте посмотрим на исходный код для commit () :

  public boolean commit() { MemoryCommitResult mcr = commitToMemory(); SharedPreferencesImpl.this.enqueueDiskWrite( mcr, null /* sync write on this thread okay */); try { mcr.writtenToDiskLatch.await(); } catch (InterruptedException e) { return false; } notifyListeners(mcr); return mcr.writeToDiskResult; } 

Другими словами, commit() вернет false, если поток прерывается в ожидании завершения записи диска или если по какой-либо причине ошибка записи на диске (скорее всего, потому, что диск был заполнен).