Vlad
что-нибуть в таком направлении: public <T> void execute(@NonNull Observable<T> source, @NonNull Consumer<T> onSuccess, @NonNull Consumer<Throwable> onError) { compositeDisposable.add(source.subscribeOn(io) .observeOn(ui) .subscribe(onSuccess, onError)); }
Алексей
а зачем? subscribeOn делает источник данных обычно, observeOn - получатель, compositeDisposable не всегда нужен
Алексей
Если какую-то группу операторов вы хотите всегда вместе переиспользовать - вам нужен Transformer и .compose()
Ruslan
Подскажите плз, как можно удобно инкапсулировать работу с Rx в отдельный класс? Чтоб просто передавать в него source(single, observable etc.), и консьюмеры onSucces/onError, и не париться извне о настройках типа выбора schedulera или добавления в compositeDisposable.
я между презентером и сервисом добавил прослойку, некоторые называют ее интерактором, которая получает консьюмеры и ходит в сервис за результатами, передавая их консьюмерам. Но я не для инкапсуляции сделал, а чтобы эти сетевые запросы были в одной куче, типа выделить их логику из презентеров (а то презентеры по 400 строк уже многовато, имхо) fun getEvents( onError: (Throwable) -> Unit, onSuccess: (List<EventItem.Event>) -> Unit ) { compositeDisposable += service.getEvents() .zipWith(service.getPlaces()) .map { getZippedEventsWithPlacesList(it) } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .retry(3) .subscribe { list, error -> if (error != null) { onError(error) } else { onSuccess(list) } } }
Vlad
а зачем? subscribeOn делает источник данных обычно, observeOn - получатель, compositeDisposable не всегда нужен
есть задача, выделить логику работы с rx в отдельный класс из презентеров, что-бы с ним было удобно работать. А что нам ему нужно давать - только соурс и консьюмеров
Vlad
проблема с которой я столкнулся еще, что нет у источников общего предка или интерфейса, для каждого отдельно перегружать метод нужно
Vlad
думал мб есть какие-то элегантные решания
Алексей
есть задача, выделить логику работы с rx в отдельный класс из презентеров, что-бы с ним было удобно работать. А что нам ему нужно давать - только соурс и консьюмеров
вот я не понмаю, что вы имеете в виду под "логикой работы с Rx". То, что утилитные методы нужно копировать для разных видов стримов - да, есть такой момент, но и стримы семантически разные, для них не сделаешь общего интерфейса.
Fr
Помоги, подскажите. Я уже весь мозг сломал. Почему не грузит картинку с url по редерикту в webview?
Ruslan
думал мб есть какие-то элегантные решания
если у вас все запросы настолько одинаковые, то да - получится супер элегантно. Но у меня так выходит, что все время надо либо что-то мэпнуть, либо зипнуть, либо еще кучу действий по пути сделать. и цепочкой subscribeOn(io).observeOn(main).subscribe() не отделаешься
Алексей
думал мб есть какие-то элегантные решания
я обычно пишу extensions на базовый презентер, типа untilDestroy() для отписки, или для отображения прогресса, но там писать-то три строчки.
Artem
Такое чувство, что группа называется Битва Экстрасенсов
Fr
А есть ещё какая нибудь инфа?
спроси что нить, может соображу. А так написал что что понимаю
Влад
а
Влад
не много работал с webview, не могу сказать
Alexey
Помоги, подскажите. Я уже весь мозг сломал. Почему не грузит картинку с url по редерикту в webview?
Нужно разрешить вебвью редиректы, погугли типа android webview allow redirect
--------
Сделал класс - менеджер, для запроса и проверки Permissions. Хочу ловить запросы пермишенов в onRequestPermissionsResult (какая-то тупая логика, но как-то так), но делать это во фрагменте, из которого их запросил. Каким образом мне вызвать requestPermissions фрагмента из отдельного класса
--------
Алексей
а как его взять?)
передать в ваш менеджер, как угодно)
--------
это нормальная практика? Если, например, в конструктор запихну?
Алексей
если ваш менеджер живёт меньше или столько же, сколько фрагмент - почему нет.
--------
прикольно, ща попробую, спасибо
--------
если ваш менеджер живёт меньше или столько же, сколько фрагмент - почему нет.
в таком случае, его не получится сделать синглтоном? Если я буду вызывать его из разных фрагментов
Алексей
если хотите синглтон, фрагменты подключать и отключать во время жизни менеджера.
--------
спасибо, понял
Кирилл
Подскажите пожалуйста стоит ли записывать на курс в skillbox?
Roman
Кто-нибудь знает, если определить в стиле background, а потом применить его на элемент в вёрстке через style, будет ли Overdraw стандартной темы, или там всё грамотно разруливается?
Salikh
Привет, народ, кто-нибудь работал с впн клиентами? Если например есть сервер, достаточно просто реализовать VpnService с данными сервера и запускать службу?
Kozimjon
Как это исправить можно?
Не применять стиль к элементу. Честно, я тебя не могу понять
Konstantin
а можно как то в горизонтальном рецыклере с linear менеджером сделать одинаковую высоту элементов? есть такое из коробки чтонибудь? каждый из них с разным объемом контента
Roman
Не применять стиль к элементу. Честно, я тебя не могу понять
Ну так если не применять, овердроу то точно будет)
Roman
Что ты хочешь сделать?
Красить вьюшку только один раз. В стандартной теме есть цвет, и когда в верстке используется ещё один цвет фона, то производятся лишние вычисления
Denis
Красить вьюшку только один раз. В стандартной теме есть цвет, и когда в верстке используется ещё один цвет фона, то производятся лишние вычисления
Оптимизация - вещь хорошая, но мне кажется, что в любом приложении найдется проблема с производительностью серьёзнее, чем та, с которой ты борешься
Kozimjon
Красить вьюшку только один раз. В стандартной теме есть цвет, и когда в верстке используется ещё один цвет фона, то производятся лишние вычисления
В стилях создай один стиль с бекколором - далее во всех стилях его указывай как парент - в элементах указывай их собственный стиль, у которого парент твой отдельный стиль с бэкколором. Так бы сделал яз
0145
Всех приветствую. Можно ли как-то поднять vpn соединение в приложении, без использования сторонних?
Ruslan
Коллеги, подключили яндекс-карты к проекту, +20Мб к размеру apk файла, при том, что подключили бесплатную базовую версию просто чтобы отображать события на карте. Надо смириться с этим фактом и уходить к гуглу за меньшим apk? Или можно что-то сделать?
Алексей
Красить вьюшку только один раз. В стандартной теме есть цвет, и когда в верстке используется ещё один цвет фона, то производятся лишние вычисления
не будет овердроу, если в иерархии стилей вашей вьюшки цвет бэка задаётся несколько раз. Сначала зарезолвится цвет, потом один раз произойдёт покраска. овердроу - это когда один и тот же регион несколько разных слоев View закрашивают несколько раз.
Sergey
Всем привет. Подскажите как удалить файлы с SDcard. через adb спокойно работает, через приложение карта доступна только для чтения. Permission WRITE_EXTERNAL_STORAGE есть но он работает только для внутренней памяти устройства
Sergey
API 24, Насколько я понял надо разрешение WRITE_MEDIA_STORAGE, но студия ругается что это только для системных приложений
Konstantin
а так да, весит дохуя
Mikalaj
Ну вот и ответ) Посмотрите в апк архиве сколько весят под платформу Если не подходит, выбрасывайте Если лениво, то для распространения юзайте апп бандл, он вроде всё разрулит с нативными либами Если не лениво, то собирайте под каждую платфому
Artem
Всем привет! есть fragment в котором находится яндекс карта и CoordinatorLayout Behavior, проблема в том что не обрабатывается нажатие на карту(longTap) или же на сам маркер (что бы показать детали заведения), когда нет behavior - все работает. Читал, что bahavior перехватывает касание, вот как решить эту проблему пока не ясно. Никто не сталкивался? Есть какие-то идеи?
Viktor
Как в RxJava выполнить два запроса последовательно когда второй зависит от первого и что бы когда второй завершился была возможность использовать данные из первого?
Артём
flatmap
Viktor
flatmap
а где потом данные из первого запроса взять?
⚡️Мухамед
Хелп ми плиз Есть программа с возможностью совершения покупки - как реализовать саму покупку(я никогда с этим не сталкивался) желательно платежными системами paybox или если кто из Кыргызстана то элсом?
Ruslan
а где потом данные из первого запроса взять?
firstObservable.zipWith(anotherObservable) И дальше можете использовать оба результата
Алексей
а где потом данные из первого запроса взять?
можно внутри flatmap после второго Observable добавить just данными из первого
Сергей
Ну и в 19 году приложение меньше 100мб апк можно считать легким
The The
коллеги, с этим можно что-то сделать? в конце концов, видео таки показывается
Bohdan
Господа, а не подксажите сделал кастомизацию SeekBar но как то получился с обводкой не подскажите как пофиксить?
Bohdan
Bohdan
Aleksey
Привет! Какие есть способы исследования проблем в приложении на проде, если в тепличных условиях воспроизвести никак? Собираем логи с устройства в собственный сервис. Может, подскажете какие-то лучшие практики по формированию этих логов?
Roman
чудеса
Sergey
это норма
Aleksey
Crashlytics
А что там? Просто исключения сыпать? Сомнительная помощь)
Roman
это норма
Нет, это не норма, а какой-то баг с мультиплатформой, не знаю, кае фиксить. Раза три в день градл есть всё что видит и ничего не делает (прямо как я на выходных), приходится вырубать процесс джавы. Никто не сталкивался?
Sergey
перезапуск иде
Roman
перезапуск иде
Очень долго, и не всегда помогает)
Ruslan
Привет! Какие есть способы исследования проблем в приложении на проде, если в тепличных условиях воспроизвести никак? Собираем логи с устройства в собственный сервис. Может, подскажете какие-то лучшие практики по формированию этих логов?
мы fabric.io используем. помимо исключений (до номера строки кода, очень удобно) показывает всю статистику по версиям приложения - количество стартов, крашей, время использования, адаптированность для версий андроида. плюс можно добавить экшены кастомные (на абсолютно любое действие пользователя). Довольно полная аналитика получается, если уделить время настройке.