Чем отличаются apply() и commit() в SharedPreferences?
Схема изменения данных, сохраненных в SharedPreferences выглядит как-то так:
val editor = sharedPreferences.edit()
editor.putString("", "")
editor.apply()
Так же есть вот такой вариант, покороче:
sharedPreferences.edit().putString("", "").commit()
В первом случае был использован apply(), во втором же commit()
Разница между этими двумя методами состоит в том, что commit() выполняется в главном потоке и по окончанию своего исполнения возвращает boolean переменную, true — если все успешно сохранилось и false если нет. В то же время apply() выполняется асинхронно, то есть в отдельном потоке. Благодаря этому не грузится UI поток, но в то же время не возвращается никакого результата, так что нет никакого способа узнать, сохранились ли данные на самом деле или же нет.
Проверьте себя после изучения темы
Бесплатный бот с тестами и практическими заданиями по Kotlin.
- 22 бесплатных урока
- Тесты к каждому уроку (всего 220 вопросов)
- Задачи в рамках практики KotlinSprint (120 задач) и курсовой проект «Телеграм бот для изучения иностранных слов»