안드로이드 개발을 할 때 생명주기를 준수하지 않으면 메모리 누출, ANR 이 발생할 수 있다. activity 와 fragment 모두 각각 생명주기를 가지고 있짐나 이는 유기적으로 연관되어 있다고 볼 수 있다.
activity 의 생명주기에 대한 자세한 내용은 다음 게시물을 참고 바란다.
4. 안드로이드 Activity - 수명주기
앞의 게시물에서 안드로이드의 4대 구성요소인 엑티비티, 서비스, Broadcast Receiver, 콘텐츠 제공자에 대해서 설염했다. 전체적인 내용은 다음 게시물을 참고하면 된다. 3. 안드로이드 기본 구성요
self-motivated-developer.tistory.com
fragment 의 생명주기는 크게 아래와 같이 나눠진다.
onAttach( )
fragment 가 activity에 붙을 때 호출된다. 인자로 context 를 전달한다.
onCreate( )
Bunddle 로 데이터가 넘어온다. UI 초기화가 불가능한 단계로, fragment view 는 생성되기 전에 해당한다.
onCreateView( )
레이아웃 inflate를 담당한다. view 관련 객체 초기화가 가능하며 savedInstanceState로 이전 상태에 대한 데이터를 제공한다.
onViewCreated( )
onCreateView( ) 로 반환된 객체가 onViewCreated( ) 의 파라미터로 전달된다. 이때 lifecycle 이 INITIALIZED 상태로 업데이트 된다. 그렇기 때문에 여기서 view 초기값 설정, livedata 옵저빙, adaper 세팅은 여기서 하는것이 권장된다.
onViewStateRestored( )
lifecycle 이 INITIALIZED 에서 CREATED 로 업데이트 된다.
onStart( )
사용자에게 fragment 가 보여질 수 있을 때 호출되며 여기서 activity 는 시작됨 상태를 보이고 있다. lifecycle 은 CREATED 에서 STARTED로 업데이트 된다.
onResume( )
사용자가 fragment 와 상호작용 할 수 있는 상태일 때에 해당한다. onResume( ) 이 호출되기 전에 사용자가 입력하거나 포커스를 설정하는 등의 작업을 하면 안된다.
onDestoryView( )
fragment 가 화면으로부터 벗어났을 경우 호출되며 lifecycle 은 DESTROYED에 해당한다. 가비지 컬렉터에 의해 수거될 수 있도록 참조가 제거되어야 한다.
onDestory( )
생성할 때는 onCreate → onCreateView, destroy 할 때는 onDestroyView 에서 view를 먼저 제거하고 onDestroy를 호출한다.
onDetach( )
fragment 가 activity로부터 해제된다.
생명주기는 개발하는데 있어서 항상 고려해야 하는 만큼 더 공부하고 정리할 예정이다!
'Android 공부' 카테고리의 다른 글
24. 가비지 컬렉션 ( Garbage Collection) (0) | 2023.02.10 |
---|---|
23. 안드로이드 viewModel - AAC? MVVM? (0) | 2023.02.08 |
21. 안드로이드 코루틴 (Coroutine) - 기초 (0) | 2023.02.06 |
20. 안드로이드 멀티스레드 (0) | 2023.02.02 |
19. 안드로이드 Manifest (0) | 2023.02.01 |