У меня есть приложение для Android, которое рисует представление (полноэкранный режим). Я хочу аннулировать часть этого, а затем просто нарисовать эту часть при следующем вызове onDraw(). Я хочу сделать это в цикле, рисуя каждую часть экрана за раз. Я обнаружил, что он хорошо работает на Nexus 7 (Android 4.4.2), не так уж плохо на Galaxy Nexus (4.3), но никогда не рисует весь экран одновременно на HTC Sensation XL (4.0.3). Были ли исправлены некоторые ошибки с конвейерным рендерингом, или я что-то не так делаю? -- Как правильно это сделать?
Подробнее: у меня есть набор объектов Rect. В обработчике есть метод обновления, который регулярно вызывает Invalidate(Rect). Каждый раз на основе индекса. в onDraw() я использую
canvas.drawBitmap(background, src, dest, null);
Где src и dest — это те же Rect, которые использовались для недействительного вызова. В конце метода onDraw индекс обновляется. Похоже, что в Android 4.0.3 весь холст был пуст, а в 4.3 и 4.4.2 — нет.
Чего я действительно пытаюсь достичь? Тратьте как можно меньше времени на каждый вызов onDraw (‹ 1 мс), чтобы ЦП мог заниматься другими делами, и в то же время поддерживать пользовательский интерфейс с несколькими растровыми изображениями, которые рисуются, вращаются и т. д. Это наиболее важно для более старые телефоны с меньшими возможностями, которые, вероятно, будут работать под управлением 4.0.3