У меня есть GridView с миниатюрными изображениями, загруженными в отдельную тему. После того, как все миниатюры будут загружены, если я прокручу сетку, она будет медленно медленно (~ 5 кадров в секунду), пока я не прокручу несколько строк вниз, а затем быстро прокрутит ее (~ 30 кадров в секунду), даже если я снова прокручу ее снова.Android GridView медленная прокрутка, затем очень быстрая прокрутка
Если я затем перепрограммирую сетку, это медленно, пока я не прокручу вниз. Это не вопрос переработки взглядов, как я уже это делаю.
(Update: загружен правильный медленный след изображение)
Я разыскал вопрос к внутреннему вызову отрисовки. Вот след Android студии, когда он медленно:
И здесь след, когда это быстро:
Это ясно виновный метод android.view.ThreadedRenderer.draw()
, но это внутренний вызов, и я не могу проверить дальше. Из моего следа я понимаю, что это не тот рисунок, который медленный, так как android.view.ThreadedRenderer.updateRootDisplayList()
, который в конечном итоге вызывает android.widget.AbsListView.draw()
, заканчивается так же быстро в обеих трассах. Таким образом, это должно быть остальная часть android.view.ThreadedRenderer.draw()
, которая вызывает это.
Посмотрев онлайн Я нашел the ThreadedRenderer.java
class
Вещи, которые я пробовал:
Принуждение аппаратного рендеринга на GridView не имеет никакого значения.
Принудительный рендеринг программного обеспечения на экране сетки заставил список всегда прокручиваться очень медленно.
Любые идеи, почему это может произойти?
Я не думаю, что это проблема с повторной обработкой взглядов, поскольку я уже это делаю. Плюс я жду ~ 20 секунд, прежде чем начать прокрутку, и это не медленно прокручивается только при показе новой строки ячеек, но всегда. – manixrock
Эскизы загружаются в отдельный поток, и я регистрирую загрузку миниатюр и адаптеры 'getView()', и все они очень быстрые. Никакие эскизы не загружаются во время прокрутки, все они загружаются в память до этого и только назначаются в виде изображения ячейки внутри вызова 'getView()' адаптера. – manixrock
Хмм, это трудно сказать, не видя ни одного вашего кода. Что произойдет, если вы замените представление миниатюр простым текстовым редактором? Кроме того, вы пробовали другие устройства/эмуляторы (genymotion)? –