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 자체가 그렇게 빈번하게 바뀌는 경우가 아니라면, 성능과 메모리 향상을 많이 가져올 수 있다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] SoftKeyboard action btn custom 으로 만들기 (0) | 2014.05.16 |
---|---|
Android Support Library 를 안정감 있게 사용하는 3가지 방법. (4) | 2014.05.16 |
안드로이드 4.4 Kitkat UI/UX 변경사항 (2) | 2014.05.14 |
[android] login button facebook doesn't work after coming back from the login page. (0) | 2014.05.14 |
[Android] GlobalLayoutListener 해제 ( remove ) 의 Version 분기. (0) | 2014.05.08 |
댓글