0

我正在使用SharedPreferences來保存Object字段。以下例子:確保正確回寫SharedPreference

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時被調用。

現在我有幾個問題:如何確認最新版本的「note」已保存?以前的編輯器調用可能會覆蓋最後一次調用嗎?我怎樣才能減少工作量?與爲100個字符文本調用apply()100x相比,必須有一些更智能,更輕的方法。

+1

你如何設置一個標誌,如果用戶沒有輸入超過幾秒鐘然後保存?保存應該幾乎是即時的,但除非您需要保存用戶寫入的每個字符,否則請定期執行。 – Mimminito 2012-03-26 08:07:42

+0

這是一個好主意。謝謝! – damaxxed 2012-03-26 09:05:41

回答

1

您可以簡單地使用​​它將幫助線程等待,直到舊線程完成其更新工作。

private synchronized void update() { 
} 
0

您可以使用editor.commit(); 此外,爲了檢查筆記的最新版本是否已保存,您可以刪除以前的版本,然後保存新筆記。 然後根據您的需要,您可以使用Toast消息或系統。

+0

我不太明白你的觀點@Deepak。當editor.putX()總是覆蓋時,爲什麼我要先刪除以前的版本?我怎樣才能檢查最後的版本是否已經保存並且沒有被另一次寫入嘗試所破壞? – damaxxed 2012-03-26 09:03:03