Android 确保正确回写SharedReference

Android 确保正确回写SharedReference,android,sharedpreferences,android-file,android-framework,performance,Android,Sharedpreferences,Android File,Android Framework,Performance,我正在使用SharedReferences来持久化对象字段。举个例子: class Item { private String note; public void setNote(String newNote) { this.note = newNote; update(); } private void update() { String json = ....; // create JSON image o

我正在使用SharedReferences来持久化对象字段。举个例子:

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();
    }
每次更改“Note”-EditText时,都会调用setNote()(从而更新())


现在我有几个问题:如何验证“note”的最新版本是否已保存?最后一个调用是否可能被先前对编辑器的调用覆盖?如何最大限度地减少工作量?必须有比为100个字符的文本调用apply()100x更智能、更轻松的方法。

您可以简单地使用
synchronized
它将帮助线程等待旧线程完成更新工作

private synchronized void update() {
}
您可以使用editor.commit(); 此外,要检查是否保存了注释的最新版本,可以删除以前的版本,然后保存新注释。
然后根据您的需要,您可以使用Toast消息或syso。

设置一个标志怎么样,如果用户没有键入超过几秒钟,则保存?保存应该几乎是即时的,但是除非你需要保存用户写的每个字符,否则就定期保存。这是一个很好的主意。谢谢我不太明白你的意思,迪帕克。当editor.putX()总是覆盖时,为什么要先删除以前的版本?我如何检查上一个版本是否已保存,并且没有被另一次写入尝试破坏?