Spadar
и зачем async ?
Spadar
viewModelScoup.launch(Dispatchers.IO) { getDataFromLocal updateLocal... }
Artyom
и зачем async ?
по сути мне не нужно ждать обновления данных из удаленного репозитория. Поэтому я подумал про async
Spadar
так ты и так не ждешь
Artyom
нужно: 1. получить данные из локального репозитория 2. запустить асинхронное обновление с сервера 3. вернуть данные из пункта 1. Которые были получены до запуска обновления
Spadar
твой скоуп работает в фоне
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()?
Вазген
Мне нравится Glide
Говорят он тяжеловесный
Spadar
ты же незнаешь что у тебя быстрее выполнится, к примеру
Spadar
Говорят он тяжеловесный
объемный, но быстрее Picasso
Artyom
ты же незнаешь что у тебя быстрее выполнится, к примеру
спасибо, я уже понял, что чем-то пахнет код. Вопрос нужно было иначе поставить: "как с помощью корутины запустить отдельный тред на обновление данных? (ждать результата обновления не нужно)"
Spadar
да, async позволяет запусти сразу все задачи в скоупе параллельно
Spadar
ты просто пролетаешь весь блок кода в скоупе
Spadar
в твоем случае этот один async, в конце, не имеет смысла
Artyom
в твоем случае этот один async, в конце, не имеет смысла
погоди, как это пролетают 🤔 viewModelScope.launch { with(Dispatchers.IO) { ///... } } в этом скоупе все команды будут выполняться последовательно, right?
Spadar
val first = async { dosomething } val second = async { dosomething } val result = first.await() + second.await() first и second будут выполнены параллельно, но результат будет ожидать обоих
Artyom
все, теперь все встало на свои места. Спасибо
Spadar
все, теперь все встало на свои места. Спасибо
но это справедливо только для корутины скоупа, если без скоупа, то необходимо через runBlocking
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
GlobalScope вообще можно убрать
просто async не работает 🤔
Artyom
я правильно понимаю, что coroutinScope вернет тот scope, в котором suspend фун-ия запускалась?
Spadar
вообще - да
Spadar
но есть некоторые особенности, смотря какая версия, они частенько стали менять реализацию
Spadar
если в качестве child scope будет Global - это плохо, в общем...
Artyom
разобрался ?
да, ок, спасибо!
Sva
Ребят, есть у кого хороший пример пагинации списка mvvm + coroutines/rx ?
Spadar
Без domain слоя ?
Spadar
Если без, то Paging Library от Google
Spadar
да, ок, спасибо!
но я бы на твоем месте не использовал бы async, если мне не нужен результат...это плохая практика...
Artyom
но я бы на твоем месте не использовал бы async, если мне не нужен результат...это плохая практика...
а что использовать, чтобы оно в отдельном потоке выполнялось? просто launch?
Spadar
а что использовать, чтобы оно в отдельном потоке выполнялось? просто launch?
да, для параллельного выполнения viewModelScope.launch { launch {....} launch {....} } для примера
Spadar
если результат не нужен
AxmedStark
Кто нибудь может объяснить написание get и post запросов? Или какие то годные материалы или видео скинуть
Mikl
Кто нибудь может объяснить написание get и post запросов? Или какие то годные материалы или видео скинуть
Советую юзать библетеку okhttp, по мне у встроенной реализации полно недочётов, и не удобно
Евгений
Голосовые команды, это вроде когда человек командует устройством, а не наоборот
Евгений
А здесь какое то распознавание действий человека с озвучиванием уведомлений
Andrii
Свят свят. Массивы в ресурсах? Насколько большие, с чем и разряженные или обычные?
30х32 стринг, обычные Читал что лучше в ресурсах хранить чем в классе
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
Andrew
Виталик Бутерин в треде, пленных не брать
Granderbird
Ребят, в MVVM навигатор будет относится к ViewModel или View?
Siiko
привет, как поменять bundleid проекта в firebase?
Сергей
Свят свят. Массивы в ресурсах? Насколько большие, с чем и разряженные или обычные?
В ресурсах можно. В strings, или в xml-каталогах. В текстовых файлах в assets. В файлах или фикс строках скорее в виде json, и Gson-ом разбирать
Сергей
Хм.тензорфлоу и нейронки сложновато для школьного проекта. А по их внедрению в приложение - на гуглевском сейте где консоль разработчика гугль сервисов есть готовое приложение с тензорфлоу, пример, гит. Ставил, собирал. Распознавалка бытовых предметов. Стакан от карандаша отличает
Сергей
Ищите, не найдете - напрягусь может вспомню
Сергей
Для текста точно было.
Сергей
Google services tensorflow console
Сергей
Во. Тут Офлайновое ocr у них было бесплатно. https://cloud.google.com/vision
Savva
Здравствуйте, товарищи, нужна ваша помощь. Нужно было сделать дропдаун меню, гугл предложил спиннер и дал мне туториал. Все получается кроме этого момента. Не могу понять где это писать. Подскажите, пожалуйста
Savva
Artem
а зачем создавать SpinnerActivity? Просто создай листенер
Artem
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { }
Artem
и внутри переопредели методы
Anonymous
Ребят, помогите, мне нужно фон menu сделать светлым, а слова тёмным.
Savva
а зачем создавать SpinnerActivity? Просто создай листенер
Я следовал за гугловским туториалом, но спасибо
zlo
Вопрос снят. Спасибо
leksss
Подключить за %1$l Р в String.
leksss
Как сделать правильно? делал по примеру, но не хочет работать