Подтвердить что ты не робот

Разница между фиксацией и применением в Android SharedPreferences

SharedPreferences используются для сохранения данных приложения на Android.

commit() и apply() оба используются для сохранения изменений в общих настройках.

Как упоминалось в библиотеке Android:

public abstarct void apply():

В отличие от commit(), который записывает свои предпочтения в постоянное хранение синхронно, apply() фиксирует свои изменения в памяти SharedPreferences немедленно, но начинает асинхронную фиксацию диск, и вы не будете уведомлены о каких-либо сбоях. Если другой редактор этот SharedPreferences выполняет регулярную фиксацию(), а apply() - все еще выдающийся, commit() будет блокироваться до тех пор, пока все асинхронные завершена, а также сама фиксация.

public abstract boolean commit ():

Скопируйте изменения настроек из этого редактора в Объект SharedPreferences, который он редактирует. Это атомически выполняет запрошенные изменения, заменяя все, что в настоящее время находится в SharedPreferences.

Означает ли это, что изменения, сделанные commit(), мгновенно по сравнению с apply()? Какой из них лучше?

Если мне нужно использовать одно и то же общее значение предпочтения в следующей непосредственной активности, какую мне следует использовать? Как я видел, если значение Preference обновлено, оно не отражается до перезапуска приложения.

4b9b3361

Ответ 1

Commit() мгновенно, но выполняет запись на диске. Если вы находитесь в потоке ui, вы должны вызвать apply(), который является асинхронным.

Ответ 2

apply() - возвращает void

apply() добавлен в 2.3, он сохраняет без возврата логическое значение, указывающее на успех или неудачу.

commit() - возвращает значение boolean.

commit() возвращает true, если сохранение работает, в противном случае - false. apply() был добавлен, поскольку команда разработчиков Android заметила, что большинство людей не обратили внимание на возвращаемое значение, поэтому применение выполняется быстрее.

Вы можете ссылаться на ссылку ниже

В чем разница между commit() и apply() в общих предпочтениях