Size: a a a

Android Developers

2020 March 09

C

Constantine in Android Developers
Георгий Авакян
всем привет, поскажите пожалуйста, вытаскиваю данные из бд room, и прилка глохнет на 2 секунды и в логе вот это
I/OpenGLRenderer: Davey! duration=2700ms; Flags=1, IntendedVsync=42476898114482, Vsync=42479198114390, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=42479198572200, AnimationStart=42479198609300, PerformTraversalsStart=42479198763200, DrawStart=42479501127400, SyncQueued=42479557374400, SyncStart=42479559041000, IssueDrawCommandsStart=42479560787300, SwapBuffers=42479567981400, FrameCompleted=42479600449100, DequeueBufferDuration=323000, QueueBufferDuration=757000,

что то про длительность, я гуглил - ничего толкового не нагуглил
duration не должно быть >= 700 ms 🤔
источник

A

Azim in Android Developers
Руслан
Тебе не нужно обращаться к вьюхам для этого. Лучше всего будет собирать все ответы в модель сразу при вводе. У тебя там текст и кнопки? Ставь на них листнеры и при изменении собирай сразу. Тебе так же понадобится модифицировать Item'ы, чтобы при скролле введённые ответы не сбрасывались. Вот можешь потом со списка Item'ов и собрать все ответы.
Ок попробую так спасибо большое
источник

ГА

Георгий Авакян... in Android Developers
Constantine
duration не должно быть >= 700 ms 🤔
я беру данные из бд и через колбэк сетаю их, и вот такая штука происходит на несколько секунд замирает прилка
источник

VM

Vadim Morozov in Android Developers
Руслан
Ну если твой AuthorizationPollingService наследует PollingServiceAbs, то всё ок.
получается что ничего лишнего не надо добавлять в метод выше скинутый если у меня уже есть просто аннотации в методе абстрактного класса?
могу уже просто вешать обсервер на презентер?
я правильно понял?
источник

Р

Руслан in Android Developers
Vadim Morozov
получается что ничего лишнего не надо добавлять в метод выше скинутый если у меня уже есть просто аннотации в методе абстрактного класса?
могу уже просто вешать обсервер на презентер?
я правильно понял?
Ну, твой сервис ещё и LifecycleObserver он так же должен наследовать, если ты хочешь его зарегистрировать
источник

Р

Руслан in Android Developers
Если я правильно понял задачу
источник

Р

Руслан in Android Developers
Timur
Ребят столкнулся с такой проблемой, Есть фрагмент А у которого ViewPager2 с тремя фрагментами (Б, С, Д), при переходе во фрагмент А из bottom bar он инфлейтится долго и так же при листание между фрагментами Б, С, Д. В остальные фрагменты bottom bar где нет Viewpager2 зависаний нет, по профайлеру там view долго инфлейтится. но блин в этих фрагментах только recyclerview
Может быть, во ViewHolder'ах что-то тяжёлое инфлейтится? Например, если выполняется inflate во вложенных вьюхах в ячейках списка.
источник

VM

Vadim Morozov in Android Developers
Руслан
Ну, твой сервис ещё и LifecycleObserver он так же должен наследовать, если ты хочешь его зарегистрировать
если можно я ещё раз продублирую
чтобы добавить во фрагмент обсервера, который у меня по сути абстракный класс, а именно его методы с аннотация аля
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)

то мне нужно
унаследовать абстрактный класс от LifecycleObserver
и после этого так как данный класс у меня используется в объекте в этом методе:
    override fun createAuthorizationsPollingService(): PollingServiceAbs<FetchAuthorizationsContract> {
       return AuthorizationsPollingService()
   }

а этот метод уже в презентере, то я во фрагменте делаю следующее
lifecycle.addObserver(presenter)

при всём при этом у меня сервис наследует абстракатный класс
class AuthorizationsPollingService : PollingServiceAbs<FetchAuthorizationsContract>() {
источник

Р

Руслан in Android Developers
Vadim Morozov
если можно я ещё раз продублирую
чтобы добавить во фрагмент обсервера, который у меня по сути абстракный класс, а именно его методы с аннотация аля
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)

то мне нужно
унаследовать абстрактный класс от LifecycleObserver
и после этого так как данный класс у меня используется в объекте в этом методе:
    override fun createAuthorizationsPollingService(): PollingServiceAbs<FetchAuthorizationsContract> {
       return AuthorizationsPollingService()
   }

а этот метод уже в презентере, то я во фрагменте делаю следующее
lifecycle.addObserver(presenter)

при всём при этом у меня сервис наследует абстракатный класс
class AuthorizationsPollingService : PollingServiceAbs<FetchAuthorizationsContract>() {
В качестве lifecycleobserver нужно регистрировать тот объект, класс которого этот интерфейс наследует. Абстракность супер-класса тут ни при чём.
источник

Р

Руслан in Android Developers
Timur
Ребят столкнулся с такой проблемой, Есть фрагмент А у которого ViewPager2 с тремя фрагментами (Б, С, Д), при переходе во фрагмент А из bottom bar он инфлейтится долго и так же при листание между фрагментами Б, С, Д. В остальные фрагменты bottom bar где нет Viewpager2 зависаний нет, по профайлеру там view долго инфлейтится. но блин в этих фрагментах только recyclerview
Так же посмотри, чтобы в onBindViewHolder не было инфлейта.
источник

C

Constantine in Android Developers
Георгий Авакян
я беру данные из бд и через колбэк сетаю их, и вот такая штука происходит на несколько секунд замирает прилка
Рекомендую почитать книгу

Android High Performance Programming
Diego Grancini
источник

VM

Vadim Morozov in Android Developers
Руслан
В качестве lifecycleobserver нужно регистрировать тот объект, класс которого этот интерфейс наследует. Абстракность супер-класса тут ни при чём.
ну у меня сейчас получается что презентер наследует LifecycleObserver и абстрактный класс наследует LifecycleObserver
источник

ГА

Георгий Авакян... in Android Developers
Constantine
Рекомендую почитать книгу

Android High Performance Programming
Diego Grancini
Книги это круто, но проблему то щас надо решить
источник

Р

Руслан in Android Developers
Vadim Morozov
ну у меня сейчас получается что презентер наследует LifecycleObserver и абстрактный класс наследует LifecycleObserver
У тебя получается два обзёрвера. Тебе именно это нужно? Их нужно регистрировать и отвязывать независимо. Всё. В чём вопрос был?
источник

NK

Nurislam Kalenov in Android Developers
Подскажите лучший подход по созданию не стандартной клавиатуры?
источник

АИ

Артем Иванов... in Android Developers
Nurislam Kalenov
Подскажите лучший подход по созданию не стандартной клавиатуры?
не создавать
источник

VM

Vadim Morozov in Android Developers
Руслан
У тебя получается два обзёрвера. Тебе именно это нужно? Их нужно регистрировать и отвязывать независимо. Всё. В чём вопрос был?
по идее нет, нужен один.

Вопрос был в том как добавить абстрактный класс в качестве обсервера во фрагмент учитывая что в абстрактном классе методы с аннотациями жизненного цикла.
источник

Р

Руслан in Android Developers
Vadim Morozov
по идее нет, нужен один.

Вопрос был в том как добавить абстрактный класс в качестве обсервера во фрагмент учитывая что в абстрактном классе методы с аннотациями жизненного цикла.
Просто наследуй свой абстрактный класс от обзёрвера.
источник

VM

Vadim Morozov in Android Developers
Руслан
Просто наследуй свой абстрактный класс от обзёрвера.
а после мне не надо как то ссылаться аля
lifecycle.addObserver(АБСТРАКТНЫЙ КЛАСС)

???
источник

Р

Руслан in Android Developers
Vadim Morozov
а после мне не надо как то ссылаться аля
lifecycle.addObserver(АБСТРАКТНЫЙ КЛАСС)

???
Регистрируешь экземпляр класса, наследующего твой абстрактный. Сам абстрактный класс нельзя инстанцировать...
источник