canvas를 이용하여 앱을 개발하던 중에

 

개발자 옵션에 있는 GPU 하드웨어 강제 가속옵션덕분에 삽질의 연속을 했습니다.

 

 

옵션을 끄면 아무 이상없이 동작을 하는데, 강제 옵션을 켜면 딱 한번의 그림만 그려지는 오류였습니다.

 

구글링을 해봐도 비슷한 증상을 찾을수 없어서 끙끙 앓다가

 

결국 하드웨어 옵션을 임시로 무시하는 쪽으로 해결을 했습니다.

 

이런 경우에도 역시 문제가 발생을 하는데요.

 

하드웨어 강제 옵션이 켜있는 상황에서 정상적으로 화면을 그리는 경우에 종종 화면의 좌표가 엇나가게 그려지는 문제가 발생했습니다.

 

 

원인은 GPU강제 가속시에 canvas가 항상 바뀌는데에 있었습니다.

 

제가 만든 앱은 onDraw가 최초 호출될때 생성되는 canvas를 저장해두고 해당 캔버스에 업데이트 하는 방식으로 비트맵을 그렸습니다.

 

그런데 GPU강제 가속하는 경우 onDraw에서 생성되는 canvas가 매번 바뀌더군요.

 

매번 새로운 캔버스에 그리는 것으로 간단하게 해결했습니다.

 

 

 

그냥 혼자 뻘짓을 한듯 싶지만... 방금 정확한 원인을 발견하고 기쁜 마음에...