Метод apply
Метод apply у
SharedPreferences.Editor
запускает запись xml-файла prefs
в фоновом потоке и сразу возвращает
управление. Ошибку записи он не
сообщает вызывающему коду, в отличие
от commit.
Для UI чаще выбирают apply.
Синтаксис
editor.putString("abcde", "12345").apply()
Пример
Давайте сохраним строку через apply:
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")
.apply()
val res = prefs.getString("abcde", "")
setContent {
Text(text = res ?: "abcde")
}
}
}
После apply в prefs появится "12345",
на экране Text покажет эту строку.
Пример
Давайте применим несколько изменений одним apply:
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")
.putInt("12345", 12345)
.apply()
val res = prefs.getString("abcde", "")
setContent {
Text(text = res ?: "abcde")
}
}
}
Обе пары запишутся в prefs одним асинхронным сохранением.