Что происходит в системе при вызове canvas.drawBitmap?

У меня есть прокручиваемая и масштабируемая карта, которая имеет копию карты с низким разрешением, которая рисуется, когда масштаб масштабирования мал, и система плитки, когда пользователь увеличивает масштаб до определенной точки. Проблема, с которой я столкнулся, заключается в том, что в самый первый раз, когда плитки отрисовываются, возникает короткое, но заметное отставание. После этого начального лага все идет гладко. Сборщик мусора не работает, и все растровые изображения загружаются во время запуска. Есть идеи, что именно происходит, чтобы я мог позаботиться о задержке? Или любой способ для работы вокруг? Спасибо. Вот код ниже:

            canvas.drawBitmap(map, null, bgRect,paint);

            if(matrix[0]>.9){
                 mapPicture = makeMyMap(xScale,yScale); //make/update our map.
                 mapPicture.draw(canvas);  
            }

person jfisk    schedule 15.08.2010    source источник


Ответы (1)


Попробуйте включить трассировку с помощью DDMS, чтобы определить, какие методы занимают много времени при первом отрисовке, и посмотрите, как они соотносятся с последующими отрисовками.

Возможно, drawBitmap запускает увеличение / уменьшение масштаба изображений на уровне платформы при первом отрисовке, а не при загрузке, но это предположение с моей стороны.

person Colin Stewart    schedule 16.08.2010