공부하면서 정리하는 블로그
로그인
공부하면서 정리하는 블로그
로그인
[Android] Fragment - LifeCycle
원준
·
2023년 7월 27일
팔로우
1
Android Studio
목록 보기
38/40
달라?
Activity의 LifeCycle과는 다르게 내부에서 각자 돌아가기에 다르다고 볼수 있다.
Fragment의 기본 클래스
1. FragmentManager
Activity 혹은 Frgment에서
휘하의 Fragment를 관리하는 클래스
로, 각각 하나씩만 가지고 있다.
해당 클래스를 통해
Activity
-
Fragment
혹은
부모 Fragment
-
자식 Fragment
는 서로 상호작용을 할 수 있게 된다.
2. FragmentTransaction
실직적으로 Fragment를 추가, 삭제 등 여러작업을 진행한다.
Fragment의 백스택 관리, Fragment 전환시 애니메이션 설정 역시 해당 클래스를 이용해 진행한다.
백스택 ?
사용자가 뒤로가기 버튼 클릭시, Activity 처럼 이전 Fragment 화면이 나오게 설정하는 것을 의미
사용 메서드
add()
: 새로운 Fragment를 컨테이너에 추가한다.
replace()
: 기존 컨테이너에 있는 Fragment를 대체한다.
remove()
: 컨테이너에 있는 Fragment를 제거한다.
show()
: 컨테이너에 잇는 Fragment를 보여준다.
(visibility = true)
hide()
: 컨테이너에 있는 Fragment를 숨긴다.
(visibility = false)
commit()
: 작업을 실행한다.
commitNow()
: 백스택이 없을 경우에만 사용하며, 작업을 즉시 수행한다.
Fragment - LifeCycle
1. onAttach()
Fragment
가
Activity
에 포함되는 순간 호출된다. 즉,
Activity
에 종속되는 과정
2. onCreate()
Fragment
만 Create된 상황.
FramentManager
에 add() 메서드가 완료했을 때 도달되는 onCreate() 콜백 함수를 호출한다.
해당 시점에서는 아직 Fragment View가 생성되지 않았기 때문에 Fragment의 View와 관련된 작업을 두기에는 적절하지 않다.
3. onCreateView()
Fragment
의 UI 구성을 위해 호출되며
Fragment View
의 생명주기가 생성된다.
onCreateView()를 통해 반환된 View객체는 onViewCreated()의 파리멑로 전달된다.
4. onViewCreated()
onCreateView()를 통해 View 객체를 전달받으며,
Fragment View
의
LifeCycle이 INITIALIZED 상태로 언데이트
된다.
해당 단계에서 View 초기 세팅을 하면 안정성을 보장 받을 수 있다.
5. onViewStateRestored()
저장해둔 모든 state 값이 Fragment의 View 계층구조에 복원됐을때 호출된다.
체크 박스 위젯이 현재 케츠 되어있는지 등 각 뷰의 상태값을 체크할 수 있다.
6. onStart()
사용자가 보여질 수 있을때 호출된다.
Activity의 onStart() 시점과 유사하며, 해당 시점부터 Fragment의 child FragmentManager 통해 FragmentTransaction을 안전하게 수행할 수 있다.
7. onResume()
Fragment가 사용자와 상호작용할 수 있을때 onResume() 콜백이 호출된다.
Activity의 onResume()시점과 유사하다.
호출되지 않은 시점에서 입력을 시도하거나 포커스를 설정하는 등 작업을 임의로 하면 안된다.
8. onPause()
사용자가 Fragment를 떠나지만, 여전히 visible일때 onPause()가 호출된다.
정확히는
Paused
가 되는 상태가 아닌,
Started
상태가 된다.
9. onStop()
부모 Activity, Fragment가 중단됐을 뿐만 아니라, ㄴ상태가 저장될때도 호출된다.
10. onDestroyView()
Fragment가 화면에서 사라진 후, Fragment View의 생명주기를 제거한다.
Fragment View에 대한 모든 참조를 제거해야 가비지 컬렉션이 이를 수거해갈 수 있다.
만약 백스택을 처리했다면 onDestroy()로 가지않고 해당 단계에서 머무른다.
11. onDetach()
Fragment가 Activity에서 완전히 제거 될때 호출된다.
실제 동작 방식
원준
공부해보자
팔로우
이전 포스트
[Android] 탭바 만들기 - Fragment
다음 포스트
[Android] GPS 위치 - Location
0개의 댓글
댓글 작성