Метод commit
Метод commit у
SharedPreferences.Editor
сохраняет изменения в файл prefs
в текущем потоке и возвращает
true, если запись прошла успешно.
Его вызывают, когда нужно сразу
знать результат или прочитать данные
в том же потоке после записи.
На UI чаще ставят
apply.
Синтаксис
val res = editor.putString("abcde", "12345").commit()
Пример
Давайте сохраним строку и проверим commit:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val prefs = getSharedPreferences("prefs", MODE_PRIVATE)
val saved = prefs.edit()
.putString("abcde", "12345")
.commit()
val res = prefs.getString("abcde", "")
setContent {
Text(text = if (saved) res ?: "abcde" else "abcde")
}
}
}
При успешном commit в prefs будет "12345",
на экране Text покажет эту строку.
Пример
Давайте удалим ключ через commit:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val prefs = getSharedPreferences("prefs", MODE_PRIVATE)
prefs.edit().putString("abcde", "12345").commit()
prefs.edit().remove("abcde").commit()
val res = prefs.contains("abcde")
setContent {
Text(text = if (res) "12345" else "abcde")
}
}
}
После commit ключ исчезнет из prefs,
на экране будет "abcde".
Смотрите также
-
метод
apply,
который сохраняет без блокировки UI -
метод
remove,
который удаляет ключ перед commit -
метод
getString,
которым читают сразу после commit -
класс
SharedPreferences,
куда попадают данные