0

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が変更されるたびに呼び出されます。

ここで、いくつか質問があります。「メモ」の最新バージョンが保存されていることを確認するにはどうすればよいですか。最後の呼び出しが以前のエディターの呼び出しによって上書きされる可能性はありますか?どうすればワークロードを最小限に抑えることができますか?100文字のテキストに対してapply()100xを呼び出すよりも、賢くて軽い方法が必要です。

4

2 に答える 2

1

単にそれを使用することができsynchronized、古いスレッドが更新のための作業を完了するまでスレッドが待機するのに役立ちます。

private synchronized void update() {
}
于 2012-03-26T08:39:40.617 に答える
0

editor.commit();を使用できます。さらに、メモの最新バージョンが保存されていることを確認するには、前のバージョンを削除してから新しいメモを保存します。次に、必要に応じて、Toastメッセージまたはsysoのいずれかを使用できます。

于 2012-03-26T08:55:39.430 に答える