Minmaxminor
Varan
Всем привет, подскажите, как правильнее было бы решить такую задачу:
Есть ViewHolder для аудиотрека, например, который по всему приложению используется во множестве RecyclerView, причем для этого могут использоваться разные адаптеры. Есть сервис, который в фоне загружает треки, при этом рассылая бродкасты через LocalBroadcastManager с айдишником трека и прогрессом загрузки. Холдер с треком должен отображать статус загрузки (Не загружен, загружается + прогресс, загружен), т.е. для этого он должен реагировать на бродкасты из сервиса, лазить в базу за отметкой о том, что его надо скачать, и проверять наличие файла этого трека во внутренней памяти устройства.
Сейчас это реализовано так: в холдере в OnAttachStateChangeListener'е идет подписка/отписка на бродкасты, а при получении бродкаста с нужным интентом и айдишником, а также при bindViewHolder в адаптере, сам холдер лезет в базу и на диск за нужными данными и тогда обновляет свой статус загрузки
Как мне кажется, подписка/отписка для каждого холдера это оверхед, это должен делать либо адаптер, либо фрагмент. Операции с базой и диском холдер тоже не должен делать. Поправьте, если я ошибаюсь
Подскажите, насколько приемлемо такое решение, и если оно отстойное, какие есть адекватные варианты решения
Rustam
Всем привет, подскажите, как правильнее было бы решить такую задачу:
Есть ViewHolder для аудиотрека, например, который по всему приложению используется во множестве RecyclerView, причем для этого могут использоваться разные адаптеры. Есть сервис, который в фоне загружает треки, при этом рассылая бродкасты через LocalBroadcastManager с айдишником трека и прогрессом загрузки. Холдер с треком должен отображать статус загрузки (Не загружен, загружается + прогресс, загружен), т.е. для этого он должен реагировать на бродкасты из сервиса, лазить в базу за отметкой о том, что его надо скачать, и проверять наличие файла этого трека во внутренней памяти устройства.
Сейчас это реализовано так: в холдере в OnAttachStateChangeListener'е идет подписка/отписка на бродкасты, а при получении бродкаста с нужным интентом и айдишником, а также при bindViewHolder в адаптере, сам холдер лезет в базу и на диск за нужными данными и тогда обновляет свой статус загрузки
Как мне кажется, подписка/отписка для каждого холдера это оверхед, это должен делать либо адаптер, либо фрагмент. Операции с базой и диском холдер тоже не должен делать. Поправьте, если я ошибаюсь
Подскажите, насколько приемлемо такое решение, и если оно отстойное, какие есть адекватные варианты решения
Вам надо в stackOverFlow... Там наверняка ответят
Иван
Всем привет!
Сейчас на новом проекте стоит задача настроить автоматизацию проведения статического анализа, сборки проекта, публикации в Firebase App Distribution и Google Play.
Чаще всего это все будет выполняться в Docker контейнере на CI машине.
Был опыт реализации этого на кастомных Gradle task’ах, но впечатление осталось не самое приятное. Сейчас как альтернативу рассматриваю Fastlane.
Поделитесь опытом пожалуйста, как показал себя Fastlane? Были ли подводные камни при внедрении и поддержке? Насколько удобно поддерживать/допиливать?
Спасибо
Lex
Добрый день всем! Подскажите пожалуйста, хочу добавить дефолтный шрифт для всего приложения - вынес его (fontFamily) в "AppTheme". В отдельных элементах хотел менять жирность (fontWeight) но она доступна только на старших apiLevel. Пробовал использовать fontStyle - там нет варианта "medium". Подскажите пожалуйста как можно обойти это?
Aleksey
fromX = 0%
toX = 200%
чёй та?) это в objectAnimator не суется . только в translate если, но я не могу комбинировать <translate/> и <objectAnimator/> в одном сете -___- мне это надо как то в xml засунуть
Surik
Эмм, а почему я не могу создать TextView в коде?
Surik
Surik
Андроид студио советует создать функцию
Dmytro
Dmytro
наверняка this это не контекст
Surik
Dmytro
this - не контекст... requireContext()
Mike
Surik
Ruslan
Surik
Mike
А что не так?
действия по альт-энтеру могут помочь только тогда, когда ты понимаешь код
Surik
Окей
Student
Всем привет, как правильно подписаться и отписаться от livedata во viewmodel?
Сейчас использую такой подход, но при нем вероятнее всего будет утечка памяти:
observeMyLiveData().observeForever { ... }
Буду рад помощи.
P.S. речь идет о livedata и viewmodel из гугловских архитектурных компонентов
Z.
Прошу прощения еще раз вопрос задам, есть ресайклер я с помощью Motion Layout смахиваю карточки в разные стороны, после того как смахнул и получил респонс я удаляю карточку из списка https://gist.github.com/VasiliZ/570d99b8ccefb2ff54daa42f941d799b таким образом, надеюсь что правильно, после 4х смахиваний (все что закешировано ресайклеромна сколько я понимаю) карточки заканчиваются и больше ничего не отображается как попросить создавать мне карточки заново? Спасибо)
Dmytro
.
Z.
.
Z.
Z.
Артем
Привет, подскажите пожалуйста, если у меня в приле две подписке, их можно как-то обе отобразить на этой форме или нужно создавать кнопки под каждую отдельно и вызывать там?
Егор
Всем доброго дня! Такой вопрос. На активити есть кнопка и RecyclerView (Находятся отдельно). Можно ли через Databinding напрямую получить доступ к первому элементу RecyclerView? Или надо создавать переменную, в неё байндить ресайклер и уже переменную передавать, чтобы получить элемент ресайклера?
Юрий
Кто знает, почему вылетает вот такая ошибка, вроде бы наследуюсь правильно от androidx.lifecycle.ViewModel
Юрий
Dmytro
Remie
Ребят, посоветуйте, как идентифицировать пользователя на устройстве, на случай, если он не пользуется гугль аккаунтом. Задача - создать БД с уникальным идентификатором, куда пишутся данные приложения.
Remie
Vlad
Всем привет. Кто-то продаёт дев акки?
Solt
Daniel
Daniel
Кто знает, почему в VP2 не передается containerID
Daniel
В итоге в onViewCreated дочернего фрагмента прилетает view: ViewGroup? == null
Solt
Vlad
Solt
Хе, ну понятно, казино))
Vlad
Ivan
Привет! Юзаб CustomTabs, добавляю action и хочу, чтобы как только он тригерится, то вызывался onNewIntent в активити. Для этого в манифесте сделал активити singleTop и таким образом создаю PengingIntent
private fun createPendingIntent(): PendingIntent {
val notificationIntent = Intent(this, ChromeTabsLoadingActivity::class.java).apply {
action = Intent.ACTION_MAIN
addCategory(Intent.CATEGORY_LAUNCHER)
}
return PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT)
}
При нажатии на кнопку создается новая активности и onNewIntent не вызывается.В чем мб проблема?
Vlad
Valentin
кто знает можно ли в firebase analytics сделать что то типа индивидуальной статистики? при входе окно с почтой полом и возрастом потом по нему активность смотреть?
Astar
Парни, а подскажите как SeekBar растянуть до правого TextView? Используется Grid
Вот layout https://hatebin.com/ilotkyqqym
Andrey
gridlayout🌚
ρ
WINGRADA
Есть ли в android studio такая возможность, растягивать изображение в зависимости от размера экрана?
Astar
Ну сократил ) и так понятно ж)
Кстати сейчас вставил строку, SeekBar растянулся... Хм...
android:layout_columnWeight="@android:integer/config_mediumAnimTime"
Astar
Все) нашел
Astar
просто можно вес указать и все будет работать
Astar
android:layout_columnWeight="100"
Кирилл
BDB 🏴☠️
Arsen
scaletype
только это свойство зависит от размеров самой вью, а по размеру экрана (парента) это math_parent или 0dp в констреинте + нужно с высотой решить (сохранять пропорции или захардкодить)
BDB 🏴☠️
Arsen
делаем Х + то, что спросили
Arsen
но без скейлтайпа не обойтись
Arsen
только если через глайд какой-нить свой указать
Сергей
Почему-то на хуавеях и только на них не срабатывают handler.postDelayed. Thread для handler создаю свой. Кто-нибудь сталкивался?
Darren
Всем привет, может кто сталкивался и знает как реализовывается похожую анимацию атомов как в xiomi security сделано? Любые наставления и ссылки приветствуются, спасибо)
Darren
Dug
Что-то из мира opengl, наверное
Nick
Анимашка созданная с помощью After Affects прикрученная в апку с помощью Lottie