Mike
> kotlin > легаси > cool story
а что мешает сконвертировать легаси-код на котлине или написать свежее легаси?)
Arsen
свежее легаси)
Arsen
это когда сеньера автобус сбил?)
Mike
многие до сих пор так делают — пишут и коммитят легаси)
Andrey
свежее легаси)
Это свежее легаси
neikist
Свежее легаси это оксиморон
Andrey
Тот чувак в девичество ios-ник
Anes
Ребят такой вопрос. Retrofit 2.6.2 с котлином с использованием suspend крашится если приходит не 200 response, как вы такое обрабатываете?
Anes
Или можно ссылку на ресурс какой
Mike
try catch
̶в̶р̶е̶д̶н̶ы̶й̶ ̶с̶о̶в̶е̶т̶
Алексей
в корутинах или try-catch или монады
Mike
наверняка там unchecked exception / ошибка программирования
Алексей
нет
neikist
покажи ошибку же
Наверняка парсинг при коде отличном от 200
Anes
ecpetion не могу скинуть, проблема была у коллеги. Просто смысл в том что у него все в корутинах было, и ответ мапило автоматом в объект. Но в ретрофите же проблема с приемом non 200 response. Вот я и думаю что на маппинге краш вылетает
Arsen
а как же CoroutineExceptionHandler ))
Mike
нет
а, я неверно прочитал вопрос. Да, тут ты прав, скорее всего
Алексей
в RxJava если не 200 по умолчанию падает в onError. Если этого не хочется, нужно оборачивать ответ в Response. В Корутинах нету onError, поэтому по умолчанию падает exception, но ответ точно так же можно завернуть в Response, и вычитывать оттуда код HTTP руками. Я это имел в виду, надо было сразу написать подробно)
Сергей
Кому свежего легаси кода пахучего
Arsen
IOException тоже в респонс?)
Denis
такая штука есть, если хочется "onError"
Алексей
CoroutineExceptionHandler
это аналог RxJavaPlugins.setErrorHandler - самой кошмарной части Rx :)
Arsen
railway OP (монады) лучше
Алексей
railway OP (монады) лучше
в них нельзя так просто взять и смочь
Denis
это аналог RxJavaPlugins.setErrorHandler - самой кошмарной части Rx :)
ну к CoroutineExceptionHandler тоже есть вопросы)
Алексей
ну к CoroutineExceptionHandler тоже есть вопросы)
я об этом и говорю, что это не то, что надо использовать на регулярной основе)
Arsen
это аналог RxJavaPlugins.setErrorHandler - самой кошмарной части Rx :)
зато от джунов спасет, чтобы юзер на видел краши)
Denis
я об этом и говорю, что это не то, что надо использовать на регулярной основе)
я это использую, чтобы ловить исключения, которые не обработал. Но в дебаге лучше такое отключать
Denis
чтобы сразу падало все
Anes
я так понимаю там нет возможности использовать переопределнные методы onResponse on Failure как на Java?
Arsen
исключения плохо, когда они вместо "дата флоу" в приложении, а затрай-кечить границу с фреймворком(окхттп) вполне ок, дальше в бизнес модель замапить и отправить через флоу здорового человека
Denis
не обязательно использовать адаптеры
Denis
просто иногда это удобнее
Anes
Все понятно. Всем спасибо)))
Denis
Varvara
Ребят, кто-то работал с face fecognition / face id?
Ilya
Всем привет, можете помочь советом? Есть задача: при нажатии на поле ввода показать красиво страницу во весь дисплей с полем ввода поиска ну и там можно ещё красивостей на страницу, можно сразу результат поиска покакзывать. Есть ли готовые решения по таким экранам и как они называются? Или мне идти пилить своё решение?
Никита 🙃
А какой атрибут стиля отвечает за системные ползунки при выделении текста (на скрине, как видно, они белые, надо подправить)
Max
Toolbar из библиотеки androidx.appcompat.widget совместим со старыми устройствами? Его можно взять как замену тулбару из v7.widget.toolbar?
Everyday
Доброго времени суток . Может тут кто-нибудь пояснить , что лучше учить для андроида : kotlin или java. Есть ли перспективы у котлина ? может ли чего котлин , чего не может java? понимаю, что тема заезжанная , в край. или ссылку на внятный ресурс какой нибудь хотя бы
Andrew
Коллеги, подскажите, есть Runnable, его надо запустить с таймаутом выполнения в фотовом потоке, по истечению таймаута вызвать обработчик. Как это можно сделать?
Y
А вообще котлин, конечно, лучше
Everyday
сразу поясню : я 3 года на шарпе аисал )
Сергей
Toolbar из библиотеки androidx.appcompat.widget совместим со старыми устройствами? Его можно взять как замену тулбару из v7.widget.toolbar?
-compat для этого и придуман, но не удивлюсь если на 19 сдк или ниже буден немного другое поведение ли вид в мелочах
Сергей
а новые проекты в мобдеве андроида почти все на котле
Дмитрий
Toolbar из библиотеки androidx.appcompat.widget совместим со старыми устройствами? Его можно взять как замену тулбару из v7.widget.toolbar?
Это одно и то же, только androidx в будущем будет обновляться, а саппорт всё - 28 это его последняя версия
Andrew
ScheduledThreadPoolExecutor
А как с ним работать? ScheduledExecutorService pool = Executors.newSingleThreadScheduledExecutor(); pool.schedule(parallelTask, 0, TimeUnit.SECONDS); try { pool.awaitTermination(30, TimeUnit.SECONDS); } catch (InterruptedException e) { }
Andrew
Ждет 30 секунд, а затем начинает выполнять
Andrew
погоди, а что ты называешь таймаутом?
Я хочу из главного потока вызвать runnable в фоновом потоке, если через 30 секунд он не завершится, то передать вызвать обработчик
Ivansuper
Я хочу из главного потока вызвать runnable в фоновом потоке, если через 30 секунд он не завершится, то передать вызвать обработчик
Запости параллельно еще один раннабл отложенный на 30 секунд. Отменяй его по окончанию выполнения первого. Если первый долго выполняет, то второй тебе отрапортует о таймауте. Один из простых вариантов
Ivansuper
Так мне нужно остановить первый, если он не уложился в 30 секунд
Тогда при выполнении второго ставь флаг первому на остановиться
Mike
А что за база? Удалённая? Можно сохранить в локальную или в префы.
Ivansuper
Ставь крутилку и не уповай на "успеет появиться"
Kozimjon
Всем привет. Я только только потихоньку перехожу на котлин. Хотел сделать expandable recyclerview - но гугл выдает только примеры на java. Сам я раньше на java делал - но хотел посмотреть другие примеры прежде чем тупо переводить на котлин - может есть какие-то моменты тонкие. А гугл только java выдает - не знаете, может на котлине это совсем по другому называется?
Kozimjon
от смены языка название UI-идиомы не меняется)
ну так значит могу смело переводить свое из старого проекта на котлин? там реализация одинакова получается?
Mike
или сохранение в локальную базу или префы
Kozimjon
да, конечно
спасибо большое)
Mike
да, точно
Vitaliy
Я хочу из главного потока вызвать runnable в фоновом потоке, если через 30 секунд он не завершится, то передать вызвать обработчик
может вот так, у AsyncTasck есть метот .get(30, TimeUnit.SECONDS), устанавливает лимит времени на получение результата
Andrew
И убивает поток?
Mike
там @Ivansuper достаточно подсказал чтобы сделать
Vitaliy
И убивает поток?
и выкидывает TimeoutException
Andrew
Спасибо, буду пробовать