002. [작성중] 이미지 로딩의 동기 및 비동기 로딩

Programming/Old 2016. 5. 10. 02:54
앱 개발 시 부드러운 이미지 로드은 단순한 해법으로 구현되지 않는다. 여기서 말하는 부드러운 이미지 로딩이란 앱을 구성하는 레이아웃, 뷰들과는 독립적으로 로드됨을 의미한다.
일반적으로 이미지를 단순히 더미로 인식하고 한꺼번에 로딩하면 될 것이라 생각하지만, 이러한 인식으로는 우리가 추구하는 부드러운 이미지 로딩을 구현할 수 없다.
이미지는 뭉텅이가 아닌 개별의 프로세스 단위로 인식하여 개별적으로 관리해야 한다. 쓰레드를 스케줄이나 풀이라는 기법을 이용하여 관리하듯 이미지 역시 이와 비슷하거나 별도의 기법을 이용하여 관리해야 한다.
이미지 로딩은 상당한 리소스와 시간을 필요로 하고 로드 속도가 길기 때문에 일반적으로 뼈대를 이루는 다른 뷰들이 모두 로드된 후 로딩을 시작한다.
이 때 로딩인디케이터가 동작 중인 시점에서는 동기화를 이용하여 이미지를 로딩할 수 있다. 동기화 방식에 따르면, 이미지 로딩 상태를 캡처하여 이미지 로딩에 맞춰 로딩인디케이터의 동작을 입맛대로 제어할 수 있다.
반면 비동기 방식의 이미지 로딩은 로딩인디케이터를 비롯하여 다른 뷰의 동작과는 무관하게 이미지를 로딩할 수 있다. 다시 말해 비동기적 이미지 로딩은 이미지 로딩 상태를 캡처하지 않고 진행함을 전제로 한다.
상태를 검사하지 않으니 당연히 비동기 방식이 속도는 보장되지만, 제어의 요소나 사용자 편의적 요소가 존재한다면 동기 방식을 이용하는 것을 추천한다.

이 글은 다분히 필자의 생각을 정리한 것일 뿐이기에 보편적인 지식이 아니다. 다만 이미지 로딩에 대해서는 생각보다 구현이 만만하지 않음에도 불구하고 개념을 정리한 글은 본 적이 없다. 개념을 정리한 글은 거의 보지 못한 것 같다.

수개월 간 삽질하면서 이제서야 갈피가 잡히기 시작했고, 실제로 어느정도 구현도 되어가고 있다.
경험 많고 실력 좋은 개발자 분들에게 이정도 구현은 누워서 식은 죽 먹기 일테지만, 지식의 수준이야 어쨌든 연구결과를 이렇게나마 작성하여 단 한 사람일지라도 공유하고 싶은 게 솔직한 심정이다.

구현과 관련하여 조만간 업데이트 하겠다.
admin