본문 바로가기
기타 개발 관련/안드로이드 개념 정리

안드로이드 - FragmentPagerAdapter, FragmentStatePagerAdapter 를 사용하여 ViewPager사용하기

by 번데기 개발자 2019. 1. 9.
반응형


Fragment는 Adnroid 3.0 (허니콤) 부터 추가된 기능입니다.

Fragment의 개념적인 설명과 실제 사용시에 대한 설명은 아래 링크를 참조하시면 좋습니다. 




FragmentPagerAdapter

제한된(고정된) 개수의 항목(Fragment)들에 적합합니다.

한번 생성되면 Fragment의 인스턴스를 FragmentManager에서 정대로 제거하지 않기 때문 (Activity가 종료되지 않는 한)

현재 보이지 않는 Fragment에서 View들을 detach합니다.



즉 ViewPager에서 좌우로 화면전환을 하여 다음 Fragment가 표시되면 이전 Fragment를 메모리 상에 저장하여 만일 사용자가 화면을 반대로 사용하면 메모리상에 저장되어 있는 Fragment를 사용하게 된다.



FragmentStatePagerAdapter

FragmentStatePagerAdapter는 메모리에 좀 더 요령이 있습니다.

범위 밖의 Fragment 인스턴스를 FragmentManager에서 완전히 제거합니다.

FragmentStatePagerAdapter는 내부에 저장됩니다.

Fragment 인스턴스는 당식이 다시 돌아왔을때 재생성되고 상태는 복원됩니다.

이 어뎁터는 개수가 미정인 리스트나 항목이 자주 변경되는 리스트에 적합합니다.


FragmentStatePagerAdapter는 ViewPager의 페이지를 이동하여 다음 Fragment가 표시되면 이전 Fragment는 메모리 상에서 제거 됩니다.
 
만일 사용자가 화면을 반대로 전환하면 기존에 저장된 상태값을 기반으로 재생성합니다.

따라서 페이지수를 알수 없거나 많다면 Fragment를 완전이 FragmentManager에서 제거하는 FragmentStatePagerAdapter를 사용하는 것이 좋습니다.



둘중 뭐를 쓸까?

페이지 수가 정해져 있고 그 수가 많지 않을때 => FragmentPagerAdapter

페이지 수를 알 수 없거나 많을때 => FragmentStatePagerAdapter


사용방법

추후 정리하겠습니다.~




참고)

Fragment와 Viewpager (옛날자료)

FragmentStatePagerAdapter 실사용 예 , 에러 해결 정리


반응형