SharedPreferences в Android — это механизм хранения данных в виде пар ключ-значение, который используется для сохранения небольших объемов информации, таких как настройки приложения, флаги состояния и предпочтения пользователя.
Основные характеристики SharedPreferences
- Используется для хранения данных в формате
key-value
. - Данные сохраняются в XML-файле в приватной папке приложения.
- Предназначен для небольших объемов данных (например, строки, числа, булевы значения).
- Поддерживает работу с
String
,Int
,Boolean
,Float
,Long
. - Не подходит для хранения сложных структур (например, объектов или больших списков).
Как использовать SharedPreferences
1. Получение экземпляра SharedPreferences:
val sharedPreferences = getSharedPreferences("my_prefs", Context.MODE_PRIVATE)
2. Запись данных:
val editor = sharedPreferences.edit() editor.putString("username", "JohnDoe") editor.putInt("user_id", 123) editor.apply() // Или editor.commit()
apply()
— записывает данные асинхронно.commit()
— записывает данные синхронно, но может замедлять работу.
3. Чтение данных:
val username = sharedPreferences.getString("username", "defaultName") val userId = sharedPreferences.getInt("user_id", -1)
4. Удаление данных:
editor.remove("username").apply()
5. Очистка всех данных:
editor.clear().apply()
Когда использовать SharedPreferences
Для хранения:
- Настроек пользователя (например, темная/светлая тема).
- Флагов состояния (например, «показано ли приветственное сообщение»).
- Токенов авторизации (но не рекомендуется из-за слабой безопасности).
Не использовать для:
- Хранения больших данных (используйте Room, SQLite, DataStore).
- Конфиденциальных данных (используйте EncryptedSharedPreferences или хранилище Keystore).
Альтернатива SharedPreferences
Google рекомендует использовать Jetpack DataStore, который основан на ProtoBuf или Preferences, так как он более современный, асинхронный и не блокирует основной поток.