Выбор ответа Middle Room и хранение данных спрашивают часто обновлено
DataStore и SharedPreferences
Вопрос
Чем Jetpack DataStore лучше SharedPreferences?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Асинхронный API на корутинах и Flow, атомарные изменения, без блокировок главного. SharedPreferences читает файл синхронно, а apply(), хоть и пишет асинхронно, может блокировать главный поток при остановке компонента и давать ANR, ошибки записи теряются.
Варианты ответа
- DataStore хранит данные в облаке Google и синхронизирует их между устройствами
- Асинхронный API на корутинах и Flow, атомарные изменения, без блокировок главногоправильный ответ
- DataStore быстрее SharedPreferences для таблиц на миллион строк и сложных выборок
- DataStore шифрует данные автоматически ключом из Android Keystore при записи
Разбор
SharedPreferences читает файл синхронно, а apply(), хоть и пишет асинхронно, может блокировать главный поток при остановке компонента и давать ANR, ошибки записи теряются. DataStore читает и пишет через корутины, изменения атомарны (edit {} как транзакция), ошибки видны в потоке. Облака и автоматического шифрования нет, а для больших данных нужен Room.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.