2014-06-23 2 views
1

내가 이해 한 바로는 onDraw 메서드로 직접 호출을 수행 할 수 있으며 postInvalidate() 메서드는 별도의 스레드에서 onDraw 메서드를 호출하기 만하면됩니다. 내가 올바르게 이해한다면 (그리고 내가 잘못하면 저를 교정하십시오), 둘 다 똑같은 결과를 나타내는 것처럼 보입니다. postInvalidate()onDraw에 직접 전화가 다른가요? 하나는 다른 것보다 더 나은 관행인가?Android : postInvalidate()를 사용하거나 onDraw에 대한 직접 호출을 사용 하시겠습니까?

답변

2

예. postInvalidate를 호출하면 화면에 캔버스가 설정되고 onDraw 함수뿐만 아니라 다양한 다른 로직이 전달됩니다. 스크린이 아닌 다른 곳으로 뷰를 그리려면 onDraw를 호출하는 것이 좋습니다.

또한 postofficeate는 루퍼에게 제어가 반환 된 후 을 다시 그려야하며 여러 이유를 결합하여 단일 다시 그리기로 다시 그립니다. 그것은 즉시 그릴려고하지 않습니다. onDraw를 호출하면 즉시 그려지기 때문에 심각한 성능 문제가 발생할 수 있습니다. 그리기 요청을 일괄 처리하지 않으므로 여러 번 다시 그리게됩니다.

다른 것들이 있지만, 결과적으로 비표준 캔버스로 그리려하지 않는 한 onDraw를 직접 호출하지 마십시오. invalidate 또는 postInvalidate를 호출하십시오.

관련 문제