Обеспечить правильную обратную запись SharedPreference - PullRequest
0 голосов
/ 26 марта 2012

Я использую SharedPreferences для сохранения полей объекта.Возьмите этот пример:

class Item {

    private String note;

    public void setNote(String newNote) {
        this.note = newNote;
        update();
    }

    private void update() {
        String json = ....; // create JSON image of the object

        Editor editor = App.getAppPrefs().edit(); // Load SharedPreferences editor
        editor.putString("exampleItem", json);
        editor.apply();
    }

setNote () (и, таким образом, update ()) вызывается каждый раз, когда изменяется "Note" -EditText

Теперь у меня есть несколько вопросов: Как я могу проверить, что самая новая версия «заметки» сохранена?Есть ли вероятность того, что последний вызов будет отменен более ранним вызовом редактора?Как я могу минимизировать нагрузку?Должен быть какой-то более умный и легкий способ, чем вызывать apply () 100x для текста длиной 100 символов.

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Вы можете просто использовать synchronized, это поможет потоку дождаться, пока старый поток завершит свою работу для обновления.

private synchronized void update() {
}
0 голосов
/ 26 марта 2012

Вы можете использовать editor.commit (); Кроме того, чтобы убедиться, что самая новая версия заметки сохранена, вы можете удалить предыдущую версию и затем сохранить новую заметку. Затем, в зависимости от ваших потребностей, вы можете использовать тостовое сообщение или системного администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...