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(); 

基本上,上面的代碼是正確的?
以上所有putSomethingapply()只適用於一個putSomething嗎?

回答

0

最後一個肯定。 apply()commit()都將保存所有更改。爲什麼你甚至想要多次應用這些變化?儘管最後一個對性能更好,但您不會注意到,因爲apply()是aSync。但是,不要做不必要的事情。但是commit()會降低性能,因爲它不是aSync。

+0

非常感謝您的回答!你真的有幫助和指導! – PavTze

0

調用apply()會保存所有使用編輯器對象所做的更改。所以下面的代碼是正確的。 =)

+0

謝謝您的支持! – PavTze

0

上面的代碼是最好的,apply()方法將保存所有SharedPreferences.Editor更改,並且不必每次都調用它。

無效申請()

提交你的喜好改變該編輯器回SharedPreferences對象是編輯。這會自動執行請求的修改,替換SharedPreferences中當前的任何修改。

請注意,當兩個編輯人員同時修改首選項時,最後一個調用申請獲勝。

如果你想知道使用SharedPreferences訪問這個網站的最好辦法:

Best Practices

一點點文檔:

Documentation

+0

即「最佳實踐」頁面說*對不起,本網站不再受支持。本文轉到http://blog.yakivmospan.com/best-practices-for-sharedpreferences/*有用的信息,請你更新鏈接? – Arjan

+0

謝謝你的回答和你有用的鏈接! – PavTze

0

適用VS提交

使用apply()和commit()的主要區別是

.apply()將保存您在後臺線程中的更改。

.commit()將保存您在主線程中的更改。

這兩個方法會產生相同的結果。

相關問題