Intereting Posts
Android, что эквивалентно классу DrawerLayout, когда не используется библиотека поддержки? Должен ли я использовать Сервис или IntentService? Возвратитесь к родительской активности с ошибкой родительской активности в манифесте ItemDecoration переопределяет getItemOffsets () и анимацию Развертывание / публикация приложения Android с помощью React Native Аннотации доступны только для java 1.5 и выше при создании бэкэнда приложений Google App Engine (JDK 1.8, новый ADT) Импортировать образец проекта в eclipse Обновление базы данных ORMLite Как использовать разные фоновые изображения для разных разрешений в Android? Single-signon в android с помощью Active Directory Android ANR keyDispatchingTimedOut Ошибка при непрерывном нажатии на экран Android: параметр saerchable.xml и searchSuggestThreshold Неиспользуемый метод drawAt () для com.google.android.maps.Overlay Когда вы строите проект андроида с помощью команды ant debug, у моего apk есть слово debug, прикрепленное к имени. Как я его изменяю? Android TextSwitcher не смог обернуть ширину содержимого после заданного текста

Когда будут применяться действия 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, если поток прерывается в ожидании завершения записи диска или если по какой-либо причине ошибка записи на диске (скорее всего, потому, что диск был заполнен).