Spadar
и зачем async ?
Spadar
viewModelScoup.launch(Dispatchers.IO) {
getDataFromLocal
updateLocal...
}
Artyom
и зачем async ?
по сути мне не нужно ждать обновления данных из удаленного репозитория. Поэтому я подумал про async
Spadar
так ты и так не ждешь
Artyom
нужно:
1. получить данные из локального репозитория
2. запустить асинхронное обновление с сервера
3. вернуть данные из пункта 1. Которые были получены до запуска обновления
Spadar
твой скоуп работает в фоне
Artyom
Artyom
Spadar
ну так здесь и есть такая логика
Artyom
а, точно. Я пост же делаю перед обновлением 😂
Artyom
представим, что post в livedat'у происходит после обновления) async становится актуальным?)
Spadar
нет
Spadar
ты же не параллелишь задачи, ты соблюдаешь очередность
Spadar
пост не может быть позже обновления, в твоём случае
Artyom
val a = getFromLocalDataSource // получение локальных данных
updateLocalDataSource() // обновление бд с сервера
liveData.postValue(a) // пост в лайв дату данных из первого шага
- вот здесь, чтобы запустить обновление параллельно, нужен будет async?
Spadar
async + await
Artyom
async + await
если не нужно ждать результата c updateLocalDataSource()?
Spadar
ты же незнаешь что у тебя быстрее выполнится, к примеру
Spadar
да, async позволяет запусти сразу все задачи в скоупе параллельно
Artyom
Spadar
ты просто пролетаешь весь блок кода в скоупе
Spadar
в твоем случае этот один async, в конце, не имеет смысла
Spadar
val first = async { dosomething }
val second = async { dosomething }
val result = first.await() + second.await()
first и second будут выполнены параллельно, но результат будет ожидать обоих
Spadar
Artyom
все, теперь все встало на свои места. Спасибо
Spadar
иначе результата await() не дождешься
Vladimir
Зачем async если результат не нужен и можно сделать launch?
Artyom
@qmanqman на сколько плохо запускать вот такой код:
suspend fun getData(withShadowUpdate: Boolean = false) : Result{
val result = getDataFromDAO()
if (withShadowUpdate) {
GlobalScope.async { withContext(Dipsatchers.IO) {
//update DB from server
} }
}
return result
}
Artyom
поправил*
Spadar
GlobalScope вообще можно убрать
Spadar
логика та же, что и до этого
Artyom
Artyom
я правильно понимаю, что coroutinScope вернет тот scope, в котором suspend фун-ия запускалась?
Spadar
вообще - да
Spadar
но есть некоторые особенности, смотря какая версия, они частенько стали менять реализацию
Spadar
Spadar
если в качестве child scope будет Global - это плохо, в общем...
Sva
Ребят, есть у кого хороший пример пагинации списка mvvm + coroutines/rx ?
Spadar
Без domain слоя ?
Spadar
Если без, то Paging Library от Google
Spadar
да, ок, спасибо!
но я бы на твоем месте не использовал бы async, если мне не нужен результат...это плохая практика...
Алексей
Artyom
Spadar
если результат не нужен
AxmedStark
Кто нибудь может объяснить написание get и post запросов? Или какие то годные материалы или видео скинуть
Mikl
Евгений
Голосовые команды, это вроде когда человек командует устройством, а не наоборот
Евгений
А здесь какое то распознавание действий человека с озвучиванием уведомлений
Andrii
Dmitry
Здравствуйте, может кто знает решение. Создаю в папке layouts активити вместе с котлин классом, но в setContextView класса она не распознаётся. Как можно решить это?
Viacheslav
Всем привет, как убрать эти надписи?
Anonymous
@Urdz1k
Вот это?
https://intellij-support.jetbrains.com/hc/en-us/community/posts/360005144179-How-to-suppress-file-date-size-in-the-Project-Tool-Window
Dmitry
Andrew
Виталик Бутерин в треде, пленных не брать
Granderbird
Ребят, в MVVM навигатор будет относится к ViewModel или View?
Siiko
привет, как поменять bundleid проекта в firebase?
Сергей
Сергей
Хм.тензорфлоу и нейронки сложновато для школьного проекта. А по их внедрению в приложение - на гуглевском сейте где консоль разработчика гугль сервисов есть готовое приложение с тензорфлоу, пример, гит.
Ставил, собирал. Распознавалка бытовых предметов. Стакан от карандаша отличает
Сергей
Ищите, не найдете - напрягусь может вспомню
Сергей
Для текста точно было.
Сергей
Google services tensorflow console
Сергей
Во. Тут
Офлайновое ocr у них было бесплатно.
https://cloud.google.com/vision
Savva
Здравствуйте, товарищи, нужна ваша помощь. Нужно было сделать дропдаун меню, гугл предложил спиннер и дал мне туториал. Все получается кроме этого момента. Не могу понять где это писать. Подскажите, пожалуйста
Savva
Artem
а зачем создавать SpinnerActivity? Просто создай листенер
Artem
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { }
Artem
и внутри переопредели методы
Anonymous
Ребят, помогите, мне нужно фон menu сделать светлым, а слова тёмным.
Savva
zlo
Вопрос снят. Спасибо
leksss
Подключить за %1$l Р в String.
leksss
Как сделать правильно? делал по примеру, но не хочет работать