Я занимаюсь разработкой игры для Android и собираю мусор
точка, где это GC только один раз каждые 5 минут или около того, который я
пока думаю, что это приемлемо.
Проблема в том, что время от времени я вижу это сообщение в
журналы:
08-29 09:58:46.410 W/copybit ( 1912): stretch_copybit::run_render fail
08-29 09:59:09.000 E/libs3c2drender( 1912): int
S3c2DRender::DoG2D(unsigned int, s3c_img*, s3c_rect*, unsigned int,
s3c_img*, s3c_rect*, int, int)::S3C_G2D_ROTATOR_18176 fail
И когда появляется это сообщение, моя игра останавливается примерно на
100-200 миллисекунд ..
В настоящее время я использую холст для рисования, хотя, если моя память
точно, я видел то же самое сообщение об ошибке при использовании Open GL.
Вот мой код для рисования объекта изображения:
cachedMatrix.reset();
cachedMatrix.postTranslate(-halfImageWidth, -halfImageHeight);
cachedMatrix.postScale(localScaleX, localScaleY);
cachedMatrix.postTranslate(localOffset.x, localOffset.y);
float degrees = (radiansToDegrees(-rotation) + 360f) % 360f;
cachedMatrix.postRotate(degrees);
cachedMatrix.postTranslate(screenPos.x, screenPos.y);
canvas.drawBitmap(image, cachedMatrix, null);
Честно говоря, я не знаю, как обойти это. Это происходит на моем телефоне Samsung Moment.
Кто-нибудь еще сталкивался с этой проблемой? И нашел обходной путь или
понимание, почему это происходит?