簡體   English   中英

如何更改共享首選項中的值

[英]How to change values in the shared preference

我創建了一個使用共享首選項的應用程序,以便用戶登錄。 用戶的密碼保存在首選項中。 我的問題是,如果用戶想要更改他/她的密碼,如何更改首選項中的密碼?

SharedPreferences prefs = ... // you already know how to use prefs and have one of this objects
Editor editor = prefs.edit();
editor.putString("password", "new value");
editor.apply();

使用apply()而不是commit()

建議您使用Editor.apply()而不是commit()因為apply()在后台異步工作,因此不太可能出現ANR(如果有的話)。

getSharedPreferences("FILE_NAME", 0 /*FILE_MODE*/)
     .edit()
     .putString("password", "new value")
     .apply();

文檔提到apply()

將您的首選項更改從此編輯器返回到它正在編輯的SharedPreferences對象。 這以原子方式執行請求的修改,替換SharedPreferences中當前的任何內容。

請注意,當兩個編輯者同時修改首選項時,最后一個編輯應用獲勝。

與commit()同步地將其首選項寫入持久存儲,apply()會立即將其更改提交到內存中的SharedPreferences,但會啟動異步提交到磁盤,並且不會通知您任何失敗。 如果此SharedPreferences上的另一個編輯器在apply()尚未完成時執行常規commit(),則commit()將阻塞,直到完成所有異步提交以及提交本身。

由於SharedPreferences實例是進程中的單例,因此如果您已經忽略了返回值,則可以使用apply()替換commit()的任何實例。

您無需擔心Android組件生命周期及其與apply()寫入磁盤的交互。 該框架確保在切換狀態之前完成apply()的飛行中磁盤寫入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM