DataStore и синхронная работа

В следующих сообщениях из нашей серии Jetpack DataStore мы рассмотрим несколько дополнительных концепций, чтобы понять, как DataStore взаимодействует с другими API, чтобы у вас было все в вашем распоряжении для использования его в производственной среде . В частности, в этом посте мы сосредоточимся на синхронной работе с DataStore . Мы будем ссылаться на кодовую лабораторию Preferences для примеров кода.

Выполнение синхронной работы

На протяжении всей этой серии мы упоминали полностью асинхронный API DataStore, основанный на внутреннем использовании сопрограмм Kotlin и Flow . Чтобы предотвратить потенциальные ошибки ANR и перебои в пользовательском интерфейсе, когда в потоке пользовательского интерфейса выполняются более тяжелые операции ввода-вывода, DataStore не предлагает готовую к использованию синхронную поддержку . DataStore сохраняет свой набор данных в файле и выполняет все операции с данными Dispatchers.IO, если не указано иное, не блокируя поток пользовательского интерфейса. Эта структура API является одним из основных преимуществ DataStore по сравнению с его предшественником SharedPreferencesи тем, как вы будете использовать DataStore в большинстве случаев.

Однако, если вы обнаружите, что ваш код требует синхронной работы с DataStore, будь то из-за зависимости от другого API, работающего в основном потоке, или из-за того, что ваша текущая настройка требует, чтобы вы извлекали некоторые постоянные значения для настройки вашего пользовательского интерфейса, вы можете использовать runBlocking()сопрограмму. Builder для синхронного чтения DataStore . Это заблокирует вызывающий поток , пока DataStore не вернет:

Если вы окажетесь в ситуации, когда вам нужно использовать этот подход, потратьте некоторое время на выяснение того, действительно ли необходимо блокировать основной поток . Подумайте, как вы могли бы использовать предоставленные асинхронные альтернативы DataStore или реорганизовать свой текущий код, чтобы избежать runBlocking(), например, предварительно загрузив данные асинхронно:

Если это невозможно, убедитесь, что вы охватили все потенциальные сценарии джанга пользовательского интерфейса с обработкой ошибок, отменой и тайм-аутами или некоторыми красивыми визуальными эффектами, чтобы сделать работу пользователя максимально гладкой.

Продолжение следует

Мы рассмотрели, как выполнять синхронную работу с DataStore. Хотя это не рекомендуемый подход для DataStore, если ваша текущая настройка требует выполнения синхронных вызовов, вы можете использовать use .runBlocking()в сочетании с .first()оператором.

Присоединяйтесь к нам в следующем посте из этой серии, в котором мы рассмотрим, как выполнить миграцию DataStore-to-DataStore .

Вы можете найти все сообщения из нашей серии Jetpack DataStore здесь:
Введение в Jetpack DataStore
Все о Preferences DataStore
Все о Proto DataStore
DataStore и внедрение зависимостей
DataStore и сериализация Kotlin
DataStore и синхронная работа
DataStore и миграция данных
DataStore и тестирование

Suggested posts

Что вы можете сделать в свой сезон ожидания (в ожидании вашей первой работы в сфере технологий)

Что вы можете сделать в свой сезон ожидания (в ожидании вашей первой работы в сфере технологий)

Переход к новой карьере может быть чрезвычайно сложным, если вы пытаетесь сделать это в одиночку. Важно найти партнеров по подотчетности, которые находятся на том же уровне обучения, что и вы, у которых схожие цели, упорство и стремление.

Преследование христиан: преступление на почве ненависти, о котором мы не говорим

Забудьте об исламофобии: христиане (и евреи) являются главными жертвами преступлений на почве религиозной ненависти.

Преследование христиан: преступление на почве ненависти, о котором мы не говорим

Любой здравомыслящий человек знает, что в политических и медийных кругах доминируют левые, даже крайне левые, что создает дисбаланс в политическом дискурсе. В области религии этот дисбаланс хорошо виден: левые газеты и сети не спешат защищать христианскую веру.

Related posts

Ковбойская ложь

Как мегакорпорации продали американцам мохнатую ложь

Ковбойская ложь

Это ярко-золотое утро в холмистой местности на западе, когда первые лучи солнечного света освещают инеистую траву на равнинах. Стадо безмятежных ангусских коров, угольно-черных и массивных, вырисовывается на фоне восхода солнца, когда они идут по проторенной тропе к месту, которое они все хорошо знают; барная стойка.

Убийство Джордана Нили и проблема «патриотического» расизма

Могут ли США сделать важный шаг и не приравнивать расистское поведение к тому, чтобы быть хорошим американцем?

Убийство Джордана Нили и проблема «патриотического» расизма

[Предупреждение: в этом эссе есть снимки экрана, на которых люди восхваляют убийцу Джордана Нили.] Сотрудники правоохранительных органов наконец — и, возможно, неохотно — предъявили обвинение в этом убийстве Дэниелу Пенни, человеку, который душил Джордана Нили, пока тот не умер.

Всегда ли искусство аполитично?

Всегда ли искусство аполитично?

Вчера мы закрыли двери конкурса песни «Евровидение» в этом году блестящим, хаотичным грандиозным финалом, в котором шведская певица Лорин забрала домой трофей, став первой женщиной, выигравшей дважды, и вернув корону Швеции спустя 50 лет после того, как ABBA выиграла конкурс. с «Ватерлоо». Они стали одним из крупнейших исполнителей в каноне поп-музыки.

Создание безопасной рабочей среды

Создание безопасной рабочей среды

«Он защитит меня, когда я в опасности. Он спрячет меня в своей палатке.