🧠 무엇인가?
1. FragmentPagerAdapter
- 모든 Fragment에 대한 상태를 저장하고 있는 놈임
- 고정된 수의 Page를 운영하는데 적합하나, 적절히 관리하지 않으면 메모리 누수가 일어나기 쉬움. (Activity가 종료되지 않으면 제거하지 않기 때문)
- onDestroyView와 onCreateView가 호출됨.
- 현재 보이지 않는 Fragment에서 View들을 Detach 함.
=> viewPager에서 좌, 우 화면전환을 하여 다음 Fragment가 표시되면 이전 Fragment를 메모리 상에 저장하면서, 사용자가 화면을 반대로 사용하면 메모리상에 저장되어 있는 Fragment를 사용하게 됨.
2. FragmentStatePagerAdapter
- cache(default = 3)되는 양 옆의 Fragment들을 뺀 나머지 Fragment들이 완전히 파괴되고, State(savedInstanceState)만 저장되어 필요할 때 다시 객체화가 되는 과정을 거침.
- 메모리 관리에 좀 더 적합하며, 내부에 저장됨.
- 범위 밖의 Fragment Instance를 FragmentManager에서 완전 제거함.
- Page 개수가 미정인 List나 항목이 자주 변경되는 List에 적합함.
=> FragmentStatePagerAdapter는 ViewPager의 페이지를 이동하여 다음 Fragment가 표시되면 이전 Fragment는 메모리 상에서 제거된다. 만약 사용자가 화면을 반대로 전환하면 기존에 저장된 상태값을 기반으로 재 생성한다. 따라서 페이지 수를 알 수 없거나 많다면 Fragment를 완전히 FragmentManager에서 제거하는 FragmentStatePagerAdapter를 사용하는것이 좋다.
요약하면, 아래와 같다.
페이지 수가 정해져 있고 그 수가 많지 않다. (정적인 편에 가까울 때) => FragmentPagerAdapter
페이지 수를 알 수 없고 그 수가 많을 때. (동적인 편에 가까울 때) => FragmentStatePagerAdapter
다만, ...Adapter를 사용할 때 주의해야 할 점은 기존 방법(Deprecated)를 사용하면 안된다는 것이다.
기존 방법(Deprecated 된 방법)
setUserVisibleHint(isVisibleToUser : Boolean) method를 오버라이드 해서 사용하였음.
새로운 방법
...Adapter 생성자 부분에 2번째 파라미터가 생겼다.1. BEHAVIOR_SET_USER_VISIBLE_HINT
2. BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
원래는 위 2가지 파라미터가 생겼는데, 1번은 Deprecated 되어 2번을 사용하기를 권장한다.
'코딩 (독학) > ★ Kotlin' 카테고리의 다른 글
[코틀린 문법] 변수(var), 상수(val) (0) | 2022.03.10 |
---|---|
[코틀린 문법] 작업 환경 세팅 (0) | 2022.03.10 |
[Ch.★] Fragment BackStack (Android Studio with Kotlin) _ 안드로이드 스튜디오 백스택 (뒤로가기, 이전 버튼) (0) | 2022.02.05 |
[Android : Kotlin] ViewBinding VS DataBinding ? (0) | 2022.01.26 |
[CH.3] JDTALK 메인화면 구성 - 2 (카카오톡 클론코딩) Bottom Navigation Bar 구성하기 - Android studio(with.Kotlin) (0) | 2022.01.24 |