필자는 프로파일 링을 완료했으며 모든 프레임에서 (이해할 만하게) 호출되는 drawBitmap 중에 대부분의 시간이 소요 된 것으로 보입니다.Android에서 Canvas drawing-drawBitmap을 최적화하는 방법은 무엇입니까?
LunarLander 샘플에서 보여준 것처럼 SurfaceView/Updating thread/canvas locking 접근법을 사용합니다. 하지만 바로 그 첫 번째 프레임에
- 에로 (this question에 따라)를 변경했습니다 비트 맵 버퍼를 구성하고
- 재사용 이후의 각 프레임을 페인트로 칠하는 비트 맵 (내 화면 변경에 모든 것이) 각 프레임의 끝에서
- 는 Traceview이 drawBitmap 내 800 × 480의 장치에서 프레임마다의 5ms을 얻어 내게 하였다 (스크린) 대상 캔버스
로 한번 버퍼 페인트. 그보다 더 좋은 성능을 얻을 수 있습니까? 아니면 그냥 돌에 새겨 넣은 것인가요? 초당 좋은 프레임을 얻기 위해 코드의 다른 부분을 최적화해야합니다.
각 프레임의 더러운 사각형을 추적하여 업데이트 할 수 있습니까? 왼쪽 상단과 오른쪽 하단에서 약간 변경하면 분명히 도움이되지 않을 것입니다. – EboMike
아마도 OpenGL이 더 나은 선택 일 것입니다. 휴대 전화와 태블릿에서 많은 테스트를 수행했으며 drawBitmap()은 태블릿을 중심으로 너무 느립니다. 그러나 다음과 같은 몇 가지 옵션이 있습니다. http://www.independent-software.com/android-speeding-up-canvas-drawbitmap/ –