Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
433 of 502 menu
◀ ▶

Метод 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,
    куда попадают данные
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить