Чем отличаются 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 не будет опубликован.