Если к примеру работать с REST API и нужно ждать ответ от сервера, стоит ли их там запускать?

|
Teshkin 2022-06-26 01:39:09
yar_rick 2022-06-26 01:36:58
Я тут будущее вам рисую )

в будущем мобилки будут создавать ии) вопрос только в том, когда это будущее наступит

Panic_Berlin 2022-06-26 01:41:01
Teshkin 2022-06-26 01:39:09
в будущем мобилки будут создавать ии) вопрос только в том, когда это будущее наступит

Лет 50 еще как минимум, а если еще учитывать тз которое нормально составить не могут, то все 100

yar_rick 2022-06-26 01:41:17
Я все жду когда автомобили будут сами ездить и в ноутбуках не будет кулеров )
An1L1ve 2022-06-26 01:42:20
А какое видео лучше посмотреть про изучению java ?
maxmvaas 2022-06-26 01:43:19
An1L1ve 2022-06-26 01:42:20
А какое видео лучше посмотреть про изучению java ?

от хауди хо, разумеется
(сарказм)

yar_rick 2022-06-26 01:43:32
https://m.youtube.com/watch?v=b-Cr0EWwaTk
Teshkin 2022-06-26 01:46:22
Panic_Berlin 2022-06-26 01:41:01
Лет 50 еще как минимум, а если еще учитывать тз которое нормально составить не могут, то все 100

жиза ,мне кажется, ии должны составлять тз) и сохранять их в блокчейне, чтобы нельзя было изменить

Teshkin 2022-06-26 01:46:51
maxmvaas 2022-06-26 01:43:19
от хауди хо, разумеется
(сарказм)

а как же Гоша Дударь?

An1L1ve 2022-06-26 01:58:55
А школа itProger норм?
Teshkin 2022-06-26 02:02:09
An1L1ve 2022-06-26 01:58:55
А школа itProger норм?

нет

lUjekSh 2022-06-26 02:03:51
android_ru-1187501.jpg
Всем привет. Только изучаю корутины. И хотелось бы понять это нормальный код?
An1L1ve 2022-06-26 02:08:29
Teshkin 2022-06-26 02:02:09
нет

А тогда что лучше?

r_u_s_r_s_t 2022-06-26 02:20:25
lUjekSh 2022-06-26 02:03:51
Всем привет. Только изучаю корутины. И хотелось бы понять это нормальный код?

Можно viewmodel scope использовать, тогда отменять не надо в onClear. Есть коделаба от Гугл, почитайте😊

r_u_s_r_s_t 2022-06-26 02:22:06
lUjekSh 2022-06-26 02:03:51
Всем привет. Только изучаю корутины. И хотелось бы понять это нормальный код?

Ну и с диспетчерами как-то сложно, не проще на мейне запустить и через withcontext получить response?)

lUjekSh 2022-06-26 02:22:40
r_u_s_r_s_t 2022-06-26 02:20:25
Можно viewmodel scope использовать, тогда отменять не надо в onClear. Есть коделаба от Гугл, почитайте😊

viewmodel scope вроде сам умирает вместе с viewmodel. если не ошибаюсь

lUjekSh 2022-06-26 02:22:59
r_u_s_r_s_t 2022-06-26 02:22:06
Ну и с диспетчерами как-то сложно, не проще на мейне запустить и через withcontext получить response?)

не знаю. по этому и спрашиваю)

r_u_s_r_s_t 2022-06-26 02:23:21
lUjekSh 2022-06-26 02:03:51
Всем привет. Только изучаю корутины. И хотелось бы понять это нормальный код?

Кстати, если делать viewmodelscope — job сохранять не надо и можно просто поставить равно после скобок функции

r_u_s_r_s_t 2022-06-26 02:24:18
lUjekSh 2022-06-26 02:22:40
viewmodel scope вроде сам умирает вместе с viewmodel. если не ошибаюсь

Правильно. Соответственно все его корутины сами отменятся. Соответственно job хранить не надо.

Teshkin 2022-06-26 02:43:14
An1L1ve 2022-06-26 02:08:29
А тогда что лучше?

Лучше начинать учиться без школ, ты хочешь именно в Android разработку?

An1L1ve 2022-06-26 02:44:04
Teshkin 2022-06-26 02:43:14
Лучше начинать учиться без школ, ты хочешь именно в Android разработку?

Да

syoritohatsuki 2022-06-26 02:51:28
An1L1ve 2022-06-26 02:44:04
Да

Ютуб, Медиум, Хабр и гугл примеры твой учитель. И мб этот чат. Тут хз)

lUjekSh 2022-06-26 02:57:36
r_u_s_r_s_t 2022-06-26 02:23:21
Кстати, если делать viewmodelscope — job сохранять не надо и можно просто поставить равно после скобок функции

android_ru-1187514.jpg
То есть лучше всего будет сделать так?

Snowmaze 2022-06-26 03:10:05
lUjekSh 2022-06-26 02:57:36
То есть лучше всего будет сделать так?

А зачем withContext(Dispatchers.Main)? Этот скоуп и так в мейн потоке запускается

lUjekSh 2022-06-26 03:15:02
Snowmaze 2022-06-26 03:10:05
А зачем withContext(Dispatchers.Main)? Этот скоуп и так в мейн потоке запускается

android_ru-1187516.jpg
Ну я этого не знал. Первый вариант вообще был такой.

Snowmaze 2022-06-26 03:16:26
Угу, просто убери, ну и не забудь в singUp в IO переходить, тогда всё ок будет
Snowmaze 2022-06-26 03:16:49
А если ретрофит юзаешь, то можно и в IO не переходить, просто suspend на метод в апи интерфейсе поставить, оно само перейдёт
feroc1ty 2022-06-26 03:17:25
Snowmaze 2022-06-26 03:10:05
А зачем withContext(Dispatchers.Main)? Этот скоуп и так в мейн потоке запускается

Я тоже только недавно корутины открыл для себя. И такой вопрос, а разве в мейн потоке их запускать ок ?
Если к примеру работать с REST API и нужно ждать ответ от сервера, стоит ли их там запускать?

lUjekSh 2022-06-26 03:17:45
Snowmaze 2022-06-26 03:16:49
А если ретрофит юзаешь, то можно и в IO не переходить, просто suspend на метод в апи интерфейсе поставить, оно само перейдёт

ну у меня ретрофит.

Snowmaze 2022-06-26 03:18:27
feroc1ty 2022-06-26 03:17:25
Я тоже только недавно корутины открыл для себя. И такой вопрос, а разве в мейн потоке их запускать ок ?
Если к примеру работать с REST API и нужно ждать ответ от сервера, стоит ли их там запускать?

Ну философия корутин такая, что все саспенд методы должны работать из мейн потока без проблем, то есть ты в самом методе, который тяжёлый должен вызывать переход в другой поток

Snowmaze 2022-06-26 03:19:04
И тогда ты их просто сможешь вызывать как будто это синхронный код
lUjekSh 2022-06-26 03:19:32
Snowmaze 2022-06-26 03:16:49
А если ретрофит юзаешь, то можно и в IO не переходить, просто suspend на метод в апи интерфейсе поставить, оно само перейдёт

Только что прочитал что ответ ретрофита мы должны в try catch обернуть если мы используем корутины. Действительно нужно ли это?

Snowmaze 2022-06-26 03:20:26
lUjekSh 2022-06-26 03:19:32
Только что прочитал что ответ ретрофита мы должны в try catch обернуть если мы используем корутины. Действительно нужно ли это?

Ну да, ошибку же может выкинуть, без корутин тоже самое же, правда там обычно каллбэк onError в Call вызввается

Snowmaze 2022-06-26 03:20:41
А тут мы их как синхронный код юзаем и соответственно ошибка вылетит прямо на месте вызова
feroc1ty 2022-06-26 03:21:38
Snowmaze 2022-06-26 03:18:27
Ну философия корутин такая, что все саспенд методы должны работать из мейн потока без проблем, то есть ты в самом методе, который тяжёлый должен вызывать переход в другой поток

т.е если я хочу обратиться к серверу с get запросом, мне это можно все запустить в GlobalScope.launch ?

Snowmaze 2022-06-26 03:22:01
feroc1ty 2022-06-26 03:21:38
т.е если я хочу обратиться к серверу с get запросом, мне это можно все запустить в GlobalScope.launch ?

Ну для андроида есть всякие lifecycleScope, viewModelScope и т.д., но да

Snowmaze 2022-06-26 03:22:15
GlobalScope лучше не юзать
feroc1ty 2022-06-26 03:22:35
Snowmaze 2022-06-26 03:22:15
GlobalScope лучше не юзать

CoroutineScope(Dispatchers.IO).launch ?)

Snowmaze 2022-06-26 03:22:58
feroc1ty 2022-06-26 03:22:35
CoroutineScope(Dispatchers.IO).launch ?)

Ну такой скоуп ты должен сам руками закрывать, но опять же есть уже от самого андроида скоупы, которые лучше всего юзать

feroc1ty 2022-06-26 03:23:36
Snowmaze 2022-06-26 03:22:58
Ну такой скоуп ты должен сам руками закрывать, но опять же есть уже от самого андроида скоупы, которые лучше всего юзать

аа т.е этот скоуп нужно закрывать, а всякие lifecycle и viewModel они уже закрываются как-то сами

Snowmaze 2022-06-26 03:23:51
Ну да
feroc1ty 2022-06-26 03:24:06
спасибо) пожалуй нужно почитать больше про корутины )
Snowmaze 2022-06-26 03:24:39
Вьюмодельный в onCleared, а фрагментовый вроде в onDestroyed закоывается
Snowmaze 2022-06-26 03:25:02
Ну и ещё в фрагментах скоуп умеет останавливаться когда вызвался onPause
Snowmaze 2022-06-26 03:25:13
И возобновлять задачи, когда onResume
lUjekSh 2022-06-26 03:26:19
Snowmaze 2022-06-26 03:20:41
А тут мы их как синхронный код юзаем и соответственно ошибка вылетит прямо на месте вызова

Как я понял если юзать CoroutineExceptionHandler то можно обойтись без try catch

Snowmaze 2022-06-26 03:27:00
Ну можно, правда лучше ошибки на месте обрабатывать
Gmjmgmjm 2022-06-26 03:27:14
Snowmaze 2022-06-26 03:24:39
Вьюмодельный в onCleared, а фрагментовый вроде в onDestroyed закоывается

А как лучше сделать чтобы в нескольких потоках обрабатывал информацию? В forEach

Snowmaze 2022-06-26 03:27:38
Gmjmgmjm 2022-06-26 03:27:14
А как лучше сделать чтобы в нескольких потоках обрабатывал информацию? В forEach

Ну параллельно что ли? Или асинхронно?

Gmjmgmjm 2022-06-26 03:28:13
Snowmaze 2022-06-26 03:27:38
Ну параллельно что ли? Или асинхронно?

Не знаю)
В одном потоке очень медленно происходит обработка

Snowmaze 2022-06-26 03:28:17
Для асинхронного хватит и withContext(Dispatchers.IO), для параллельного async await можно юзать
|