본문 바로가기
프로그래밍 놀이터/안드로이드, Java

ViewPager 를 사용할 때 performance, memory 이슈 직면하지 않기.

by 돼지왕 왕돼지 2014. 5. 15.
반응형


 ViewPager 를 사용할 때 performance, memory 이슈 직면하지 않기.

 

ViewPager 를 사용할 때 performance, memory 이슈 직면하지 않기.


View 계층의 단순화


ViewPager 는 현재 보여지는 page 뿐만 아니라 좌, 우의 page 도 pre loading 시켜 놓는다.

따라서 UI 복잡한 것들이 page 를 차지하고 있다면, scroll 을 하면서 계속 버벅이게 된다.

즉, Pager 에 들어가는 view 구성은 최대한 단순하게.




Thread 처리를 확실히.


한 화면에 모든것이 표현될 때는 Main Thread 에서 살~짝 heavy 한 일을 해도 그럭저럭 그냥 넘어가는 일이 발생한다.

하지만, viewpager 의 경우는 좌우의 화면을 미리 그려놓기 때문에 생성되면서

thread 에서 작업하는 것이 길어지면 성능이슈에 당면하게 된다.

이에 대해 알지 못하는 유저는 "지금 페이지에서 작업하는 것도 없는데 왜 버벅대지?" 하며 의문을 가지게 된다.


따라서 thread 에서 작업해야 할만한 것들은 철저하게 다른 thread 로 분리해서 작업해야 한다.




PageLimit 으로 미리 로딩해두기.


페이지를 이동할 때마다 새롭게 focus 를 받는 view 옆의 view 가 pre loading 된다.

하지만, 요즘 앱의 tutorial page 처럼 무조건 끝까지 봐야 다음 step 으로 넘어가는 경우에는

ViewPager.setOffscreenPageLimit 함수를 이용해서 처음에 다 로딩해주어 버벅이지 않도록 하는 방법도 있다.

단, 각 page 가 복잡한 구조이면 메모리 이슈가 발생할 수 있기 때문에 이도 잘 조절해야 한다.




FragmentPager 사용할 경우 메모리 이슈가 있다면, FragmentPagerAdapter 를 사용해보자.


http://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html


이 녀석은 FragmentPagerAdapter 에 비해 조금 더 메모리를 아낀다.

Fragment 의 saved state 만 저장해놓고, fragment 자체는 destroy 시킨다.

performance 이슈가 발생할 수는 있지만, page 자체가 그렇게 빈번하게 바뀌는 경우가 아니라면, 성능과 메모리 향상을 많이 가져올 수 있다.






반응형

댓글