ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SurfaceView를 사용하는 이유
    예전 글들/Android 2011. 5. 11. 15:06
    반응형
     화면 상에 그림을 마구마구 띄우면 특히 Canvas를 이용한 그림을 띄우면 느려지는 걸 볼 수 있다. 이를 해결하려면 thread라는 걸 써야하는데 여기서 문제가 있다.

    - 주 Thread가 아닌 백그라운드 Thread에서 화면에 뭔가를 출력하는 것은 허용되지 않는다고 한다.
    - Thread는 계산이나 네트워크 입출력 같은 것을 하는 것이지 사용자와 직접 인터페이스하지 않는다.
    - 하나의 Canvas에 대고 두 Thread가 동시에 출력을 내 보내면 어떤 혼란이 발생할지 쉽게 추측 가능하며 그래서 운영체제는 Thread가 Canvas를 액세스하지 못하도록 금지한다.

    그래서 SurfaceView를 사용한다는군요. 일반 View는 Canvas를 가지지만 SurfaceView는 표면을 가진다.
    Surface는 쉽게 말해 메모리에 있는 가상화면이다.
    하지만 어디까지나 메모리일 뿐이므로 Thread에서 미리 출력해 놓을 수 있으며 Thread가 표면에 그리는 동안 메인 Thread는 사용자의 입력을 즉시 처리할 수 있다.
    Surface는 메모리에 있을 뿐이지 화면과 구조가 같으므로 Canvas에 출력하는 것과 동일한 방법으로 출력한다.

    내용 출처는 [안드로이드 프로그래밍 정복2 - 한빛미디어] Chapter 17의 고급 그리기 과정 중
    반응형

    댓글

Designed by Tistory.