Ответ 1
Commit()
мгновенно, но выполняет запись на диске. Если вы находитесь в потоке ui, вы должны вызвать apply()
, который является асинхронным.
SharedPreferences используются для сохранения данных приложения на Android.
commit()
и apply()
оба используются для сохранения изменений в общих настройках.
Как упоминалось в библиотеке Android:
public abstarct void apply():
В отличие от commit(), который записывает свои предпочтения в постоянное хранение синхронно, apply() фиксирует свои изменения в памяти SharedPreferences немедленно, но начинает асинхронную фиксацию диск, и вы не будете уведомлены о каких-либо сбоях. Если другой редактор этот SharedPreferences выполняет регулярную фиксацию(), а apply() - все еще выдающийся, commit() будет блокироваться до тех пор, пока все асинхронные завершена, а также сама фиксация.
public abstract boolean commit ():
Скопируйте изменения настроек из этого редактора в Объект SharedPreferences, который он редактирует. Это атомически выполняет запрошенные изменения, заменяя все, что в настоящее время находится в SharedPreferences.
Означает ли это, что изменения, сделанные commit()
, мгновенно по сравнению с apply()
? Какой из них лучше?
Если мне нужно использовать одно и то же общее значение предпочтения в следующей непосредственной активности, какую мне следует использовать? Как я видел, если значение Preference обновлено, оно не отражается до перезапуска приложения.
Commit()
мгновенно, но выполняет запись на диске. Если вы находитесь в потоке ui, вы должны вызвать apply()
, который является асинхронным.
apply() - возвращает void
apply() добавлен в 2.3, он сохраняет без возврата логическое значение, указывающее на успех или неудачу.
commit() - возвращает значение boolean.
commit() возвращает true, если сохранение работает, в противном случае - false. apply()
был добавлен, поскольку команда разработчиков Android заметила, что большинство людей не обратили внимание на возвращаемое значение, поэтому применение выполняется быстрее.
Вы можете ссылаться на ссылку ниже
В чем разница между commit() и apply() в общих предпочтениях