Диалог - ненужное многократное рисование? - PullRequest
1 голос
/ 24 сентября 2019

После обновления с Lollipop (5.0.2) до Nougat (7.1.2) клиент сообщил мне о тревожном явлении многократного рисования диалога после отображения на экране.Проблема хорошо видна в диалоговых окнах со многими элементами управления.

То же приложение под Lollipop работало правильно:

  • диалог отображался быстро (0,5 с),
  • диалоговое окно сразу реагировало (через 0,0 с после отображения)

После переключения на нугу:

  • диалоговое окно отображается с задержкой (2,5 с)
  • после появления на экране нужно подождать несколько секунд ответственности (через 4,2 с после шоу)

В четырех прилагаемых фильмах я представляю это явление в разных ситуациях и версиях Android.См. Нижний край диалогов:

  1. Lollipop - диалог с ListView - правильно
  2. Lollipop - диалог с ScrollView - правильно
  3. Nougat - диалог с ListView - неправильно!
  4. Nougat - диалог с ScrollView - неправильно!

ВВ случае диалога с ListView, под Nougat, для каждого элемента , метод Adapter.getView () вызывался до 36 раз!Полагаю, это означает, что dlalog был нарисован 36 раз.

После некоторых исправлений в xml макета я смог уменьшить количество вызовов Adapter.getView () до 5, но никогда до 1.

Однако в случае с Nougat в случае диалога без ListView все еще остается неприглядный эффект «сопоставления» диалога после его появления на экране.В разделе Lollipop существует только один вызов Adapter.getView () для каждого элемента.

Пожалуйста, помогите, как попытаться устранить этот эффект?

Клиент не можетизмените версию Android на более новую, потому что это крупное производство, и после испытаний с Nougat мы больше не можем себе это позволить.

...