Ответ 1
Прокрутка кеша - это в основном кеш чертежа.
В android вы можете попросить View сохранить свой чертеж в кеше, называемом кэшем рисования (в основном растровым). По умолчанию кеш чертежа отключен, так как он занимает память, но вы можете попросить View явно создать его либо через setDrawingCacheEnabled, либо через аппаратные уровни (setLayerType).
Так почему это полезно? Поскольку использование кэша чертежа делает вашу анимацию гладкой по сравнению с перерисовкой вида в каждом кадре.
Этот тип анимации также может быть аппаратным ускоренным, поскольку система рендеринга может принимать это растровое изображение и загружать его на графический процессор в качестве текстуры (при использовании аппаратных уровней) и выполнять быстрые манипуляции с матрицами (например, изменять альфа, переводить, вращать). Сравните это с анимацией, если вы перерисовываете (onDraw получает вызов) на каждом кадре.
В случае списка, когда вы прокручиваете, бросая, вы по существу оживляете представления своего списка (перемещая их вверх или вниз). В listview используется кеш чертежа его видимых дочерних элементов (и некоторые потенциально видимые дети рядом с краями), чтобы оживить их очень быстро.
Есть ли недостаток в использовании кэша чертежей? Да, он потребляет память, поэтому по умолчанию она отключена в режиме просмотра. В случае с ListView кеш автоматически создается для вас, как только вы прикасаетесь к ListView и немного передвигаетесь (чтобы отличить кран от прокрутки). Другими словами, как только ListView думает, что вы собираетесь прокручивать/бросать, он создаст кэш прокрутки, чтобы вы могли оживить движение прокрутки/броска.