0

Мой вопрос очень прост, но я не нашел ответа (извините, если он где-то и просто не нашел его).sharedPreferences apply() сохраняет все выше или только последнее? Как это работает?

Как работает sharedpreferences.editor.apply()?

Чтобы было ясно, у меня есть этот код, например:

MainActivity.editor.putBoolean(somestring, someboolean); 
MainActivity.editor.apply(); 
MainActivity.editor.putInt(somestring, someint); 
MainActivity.editor.apply(); 
MainActivity.editor.putString(somestring,somestring); 
MainActivity.editor.apply(); 
MainActivity.editor.putLong(somestring, somelong); 
MainActivity.editor.apply(); 
MainActivity.editor.putLong(somestring, somelong); 
MainActivity.editor.apply(); 
MainActivity.editor.putBoolean(somestring, someboolean); 
MainActivity.editor.apply(); 

Это работает в моем проекте. Но лучше ли использовать производительность выше или ниже?

MainActivity.editor.putBoolean(somestring, someboolean); 
MainActivity.editor.putInt(somestring, someint); 
MainActivity.editor.putString(somestring,somestring); 
MainActivity.editor.putLong(somestring, somelong); 
MainActivity.editor.putLong(somestring, somelong); 
MainActivity.editor.putBoolean(somestring, someboolean); 
MainActivity.editor.apply(); 

В принципе, приведенный выше код верен?
Будет ли это работать на всех putSomething выше или apply() работает только на один putSomething?

ответ

0

Последнее, что точно. Оба значения apply() и commit() сохранят все изменения. Почему вы даже хотите применить изменения несколько раз? Хотя последнее лучше для производительности, вы не заметите, потому что apply() - это aSync. Но не делайте ненужных вещей. Однако commit() уменьшит производительность, потому что это не aSync.

+0

Большое спасибо за ваш ответ! Вы действительно полезны и поучительны! – PavTze

0

вызов функции apply() однажды сохраняет все изменения, внесенные в объект редактора. Поэтому приведенный ниже код правильный. =)

+0

Спасибо за ваш anser! – PavTze

0

Приведенный выше код является лучшим, метод apply() сохранит все изменения SharedPreferences.Editor и не нужно каждый раз его вызывать.

недействительным применяются()

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

Обратите внимание, что, когда два редактора изменяют предпочтения в одно и то же время, последний для вызова применяет выигрыши.

Если вы хотите знать, лучший способ использовать SharedPreferences посетить этот сайт:

Best Practices

и немного документации:

Documentation

+0

, что страница «Лучшие практики» говорит * Извините, этот сайт больше не поддерживается.Эта статья переместилась на http://blog.yakivmospan.com/best-practices-for-sharedpreferences/* Полезная информация, можете ли вы обновить ссылку? – Arjan

+0

Благодарим вас за ответ и полезные ссылки! – PavTze

0

применять против фиксации

Основные отличия в применении apply() и commit()

.apply() сохранит изменения в фоновом режиме.

.commit() сохранит изменения в основной теме.

Эти два метода приведут к такому же результату.

 Смежные вопросы

  • Нет связанных вопросов^_^