Size: a a a

Javanese Questions

2017 November 04

D

Danil Yudov in Javanese Questions
Fieldmarshal
#вопрос #android #recyclerview #ui
Есть 2 фрагментa, оба в разметке с ProgressBar & RecyclerView. В onViewCreated каждого фрагмента ставлю прогрессбару
visibility = VISIBLE

, делаю запрос к API по RxJava, затем
visibility = GONE

- после этого заполняется RecyclerView.

Проблема. Если в XML прогрессбару присвоено GONE, или INVISIBLE, то он не показывается при запросе к API. Хотя должен.
Если в XML visibility не указана либо VISIBLE, прогрессбар появится, но будет крутиться даже после заполнения списка за самим списком. Хотя не должен.

Stackoverflow и Google толком не помогли.
В чём проблема, (скорее, я что-то делаю не так), и как её исправить, чтобы прогрессбар крутился и исчезал, когда надо?

UPD 1 Он и делается Visible до начала загрузки, и Gone по завершении. Поэтому я вообще пока не знаю, что это может быть.

Код скину через час-полтора, прямо сейчас не могу.


UPD 2 Code: https://gist.github.com/fm-norton/c178c93000652aa9d3da5e8f62de6312
Скрывай ProgressBar в onNext() subscribe. В данном виде, он у тебя делается VISIBLE и сразу же после этого GONE
источник

QH

Quantum Harmonizer in Javanese Questions
Fieldmarshal
#вопрос #android #recyclerview #ui
Есть 2 фрагментa, оба в разметке с ProgressBar & RecyclerView. В onViewCreated каждого фрагмента ставлю прогрессбару
visibility = VISIBLE

, делаю запрос к API по RxJava, затем
visibility = GONE

- после этого заполняется RecyclerView.

Проблема. Если в XML прогрессбару присвоено GONE, или INVISIBLE, то он не показывается при запросе к API. Хотя должен.
Если в XML visibility не указана либо VISIBLE, прогрессбар появится, но будет крутиться даже после заполнения списка за самим списком. Хотя не должен.

Stackoverflow и Google толком не помогли.
В чём проблема, (скорее, я что-то делаю не так), и как её исправить, чтобы прогрессбар крутился и исчезал, когда надо?

UPD 1 Он и делается Visible до начала загрузки, и Gone по завершении. Поэтому я вообще пока не знаю, что это может быть.

Код скину через час-полтора, прямо сейчас не могу.


UPD 2 Code: https://gist.github.com/fm-norton/c178c93000652aa9d3da5e8f62de6312
Тебе абсолютно правильно ответили, но я добавлю.

Когда ты подписываешься на что-либо (Single в данном случае), ты отдаёшь в subscribe функции (лямбда-выражения или function reference), которые будут выполнены *потом*, асинхронно. То, что они находятся внутри другой функции (здесь — в onViewCreated), не значит, что они выполняются раньше, чем закончится её выполнение.
источник

F

Fieldmarshal in Javanese Questions
Danil Yudov
Скрывай ProgressBar в onNext() subscribe. В данном виде, он у тебя делается VISIBLE и сразу же после этого GONE
Спасибо, сейчас проверю
источник

F

Fieldmarshal in Javanese Questions
Лол. Ставлю GONE в onNext(), запускаю приложение, прогрессбар крутится, но продолжает крутиться, когда всё уже загрузилось и отрисовалось на экране.

UPD2 Code: https://gist.github.com/fm-norton/c178c93000652aa9d3da5e8f62de6312

в onComplete тоже пробовал ставить - прогрессбар не исчезает, а строка в лог выводится.
источник

MR

Max Railian in Javanese Questions
Fieldmarshal
Лол. Ставлю GONE в onNext(), запускаю приложение, прогрессбар крутится, но продолжает крутиться, когда всё уже загрузилось и отрисовалось на экране.

UPD2 Code: https://gist.github.com/fm-norton/c178c93000652aa9d3da5e8f62de6312

в onComplete тоже пробовал ставить - прогрессбар не исчезает, а строка в лог выводится.
Может в onComplete поставить?
Я конечно код не видел, но обычно туда ставят если хочешь выполнить что-то по окончанию

Закинь код на gist какой-то
источник
2017 November 05

QH

Quantum Harmonizer in Javanese Questions
Fieldmarshal
Лол. Ставлю GONE в onNext(), запускаю приложение, прогрессбар крутится, но продолжает крутиться, когда всё уже загрузилось и отрисовалось на экране.

UPD2 Code: https://gist.github.com/fm-norton/c178c93000652aa9d3da5e8f62de6312

в onComplete тоже пробовал ставить - прогрессбар не исчезает, а строка в лог выводится.
Ну, мне хочется ответить «не бывает такого». GONE — значит, должен исчезать.
Я могу попробовать собрать и запустить проект у себя, но для этого нужно будет выложить его на гитхаб.
источник

QH

Quantum Harmonizer in Javanese Questions
Max Railian
Может в onComplete поставить?
Я конечно код не видел, но обычно туда ставят если хочешь выполнить что-то по окончанию

Закинь код на gist какой-то
doAfterTerminate тогда, чтобы при dispose не выполнялось.
источник

F

Fieldmarshal in Javanese Questions
Quantum Harmonizer
Ну, мне хочется ответить «не бывает такого». GONE — значит, должен исчезать.
Я могу попробовать собрать и запустить проект у себя, но для этого нужно будет выложить его на гитхаб.
ok. и да, ещё у меня есть такое предупреждение: Skipped N frames. The app may be doing too much work on its main thread - как раз когда крутится прогрессбар и грузятся данные. В этот момент приложение здорово виснет, прогрессбар крутится отрывисто
источник

QH

Quantum Harmonizer in Javanese Questions
Fieldmarshal
ok. и да, ещё у меня есть такое предупреждение: Skipped N frames. The app may be doing too much work on its main thread - как раз когда крутится прогрессбар и грузятся данные. В этот момент приложение здорово виснет, прогрессбар крутится отрывисто
Значит, ты выполняешь какую-то тяжёлую работу в главном потоке.
Ну, и, загуглив, увидишь то же объяснение.
источник

F

Fieldmarshal in Javanese Questions
хм. Ну ты видел вызов rxjava, и там я пишу
subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread())

так что не должно
источник

MR

Max Railian in Javanese Questions
Ну это не обязательно здесь
источник

F

Fieldmarshal in Javanese Questions
Max Railian
Ну это не обязательно здесь
приложение подвисает только на этих моментах, когда загружаются данные

в общем, @Harmonizr, я сейчас сделаю коммит и тогда скину ссылку
источник

F

Fieldmarshal in Javanese Questions
Quantum Harmonizer
doAfterTerminate тогда, чтобы при dispose не выполнялось.
тоже не помогло.
источник

QH

Quantum Harmonizer in Javanese Questions
Fieldmarshal
Лол. Ставлю GONE в onNext(), запускаю приложение, прогрессбар крутится, но продолжает крутиться, когда всё уже загрузилось и отрисовалось на экране.

UPD2 Code: https://gist.github.com/fm-norton/c178c93000652aa9d3da5e8f62de6312

в onComplete тоже пробовал ставить - прогрессбар не исчезает, а строка в лог выводится.
У тебя как минимум два прогрессбара.
источник

QH

Quantum Harmonizer in Javanese Questions
Первый — из-за <include>, второй — из-за .add(R.id.fragmentContainer, usersFragment).
источник

F

Fieldmarshal in Javanese Questions
Quantum Harmonizer
У тебя как минимум два прогрессбара.
Хм. Вот именно, что как минимум, потому что есть ещё pbRepos. 😄

Как избавиться от лишних прогрессбаров?
источник

QH

Quantum Harmonizer in Javanese Questions
Fieldmarshal
Хм. Вот именно, что как минимум, потому что есть ещё pbRepos. 😄

Как избавиться от лишних прогрессбаров?
Изучи сначала базу, без фрагментов, Rx, MVP и CLEAN.

> Как избавиться от лишних прогрессбаров?
Не создавать их. Убрать include. Сначала разбираться, как работает, потом уже — использовать.
источник

F

Fieldmarshal in Javanese Questions
Quantum Harmonizer
Изучи сначала базу, без фрагментов, Rx, MVP и CLEAN.

> Как избавиться от лишних прогрессбаров?
Не создавать их. Убрать include. Сначала разбираться, как работает, потом уже — использовать.
Окей, спасибо.
источник

MR

Max Railian in Javanese Questions
Quantum Harmonizer
У тебя как минимум два прогрессбара.
А где кстати такие диаграммки делаются?
Полезная штука
источник

QH

Quantum Harmonizer in Javanese Questions
Max Railian
А где кстати такие диаграммки делаются?
Полезная штука
Tools -> Android -> Android Device Monitor
Window -> Open Perspective -> Hierarchy View
источник