Чем отличаются apply() и commit() в SharedPreferences?

Схема изменения данных, сохраненных в SharedPreferences выглядит как-то так:

val editor = sharedPreferences.edit()
editor.putString("", "")
editor.apply()

Так же есть вот такой вариант, покороче:

sharedPreferences.edit().putString("", "").commit()

В первом случае был использован apply(), во втором же commit()

Разница между этими двумя методами состоит в том, что commit() выполняется в главном потоке и по окончанию своего исполнения возвращает boolean переменную, true — если все успешно сохранилось и false если нет. В то же время apply() выполняется асинхронно, то есть в отдельном потоке. Благодаря этому не грузится UI поток, но в то же время не возвращается никакого результата, так что нет никакого способа узнать, сохранились ли данные на самом деле или же нет.

Поделиться уроком

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *