Android 的 SharedPreferences 中 commit() 和 apply() 的區別是什麼?
簡介
在構建 Android 應用程式時,我們經常會遇到需要在應用程式內部儲存一些資料的情況,例如儲存使用者會話的應用程式。Android 提供了幾種不同的方法來在 Android 應用程式中儲存資料,例如 SQLite 資料庫、SharedPreferences、Room 資料庫等。每種資料儲存方法都用於不同的資料儲存目的。如果需要以表格形式儲存資料,則建議使用 Room 資料庫或 SQLite 資料庫。
什麼是 Android 中的 SharedPreferences?
Shared Preferences 是 Android 中一種資料儲存類,它以鍵值對的形式儲存資料。藉助 Shared Preferences,我們可以將資料作為鍵值對儲存在 Android 中,從而允許儲存和檢索基本資料型別。它是一個輕量級、永續性的資料儲存,可用於儲存應用程式級別的資料。它用於儲存少量資訊,例如使用者偏好設定、應用程式設定以及其他少量資料,例如使用者登入憑據、使用者會話 ID 等。Shared Preferences 中有幾種方法用於在 Android 應用程式中儲存和檢索資料,例如 commit()、apply()、put()、get() 等。在本文中,我們將重點介紹 Shared Preferences 中最常用的兩種方法:commit() 和 apply()。
Commit() 和 apply() 是 SharedPreferences 類中使用的兩種重要方法,用於將資料儲存到偏好設定檔案中。這兩種方法都用於將資料儲存到 Shared Preferences 檔案中,但每種方法都有一些關鍵區別,需要理解。
Commit()
commit() 方法是將資料儲存到 Shared Preferences 的傳統方法。它是一個同步方法,這意味著它會阻塞主執行緒,直到資料儲存到 Shared Preferences 中。這可能會導致使用者體驗延遲,因為該方法需要幾毫秒才能完成。此外,commit() 方法必須返回一個布林值,以指示資料是否成功儲存。
Apply()
apply() 方法是在 API 級別 9 (Android 2.3) 中引入的。它是一個非同步方法,這意味著它不會阻塞主執行緒,從而帶來更好的使用者體驗。它還允許一次儲存多個數據,與 commit() 方法相比更高效。與 commit() 方法不同,apply() 方法不返回布林值,因此無法確定資料是否成功儲存。
Commit 和 Apply 的區別
Commit() |
Apply() |
|---|---|
Commit 方法設定首選項的值並同步儲存。 |
Apply 方法儲存首選項的值並非同步儲存。 |
此方法的返回型別是布林值。可能是真/假。 |
此方法的返回型別是 void。 |
此方法會阻塞主執行緒。 |
此方法不會阻塞主執行緒。 |
Commit 方法會提供較差的使用者體驗,因為此方法需要幾毫秒才能完成。 |
由於 Apply 方法非同步執行,因此不會影響使用者體驗。 |
Commit 方法返回 true 或 false,這將有助於指示資料是否已儲存在 Shared Preferences 中。 |
Apply 方法返回 void,不會提供任何有關資料是否已儲存在 Shared Preferences 中的資訊。 |
結論
commit() 和 apply() 方法都用於將資料儲存到 Shared Preferences 中。commit() 方法是一個同步方法,可能會導致使用者體驗延遲,而 apply() 方法是一個非同步方法,效率更高,並且不會阻塞主執行緒。commit() 方法必須返回一個布林值以指示成功,而 apply() 方法則不會。在使用它們儲存資料之前,瞭解這兩種方法之間的區別非常重要。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP