안드로이드에는 리소스 제한이 있으며 Activity의 View(화면)이 뒤로 가거나 사라지는 경우 등 특정 상황에서 특정한 메서드를 호출하는데 생명주기는 각각의 상황에서 어떤 메서드를 호출하는지 알려준다.
Activity
1. onCreate()
생명주기동안 딱 한번만 실행되는 메서드로 액티비티 최초 실행시 수행할 작업들을 넣는다.
2. onStart()
액티비티가 보이기 전에 호출되는 메서드며 화면에 올라올 때 마다 실행해야하는 코드를 작성한다.
3. onResume()
액티비티 일부가 보일때 호출되며 전화를 받고 오는 등 액티비티가 일시정지 되었다가 돌아오는 경우 호출된다.
액티비티가 재개되었을 때 실행해야하는 코드를 넣어야하며 수행시간이 짧기 때문에 코드가 무거우면 안된다.
4. onPause()
방해되는 이벤트가 발생하고 액티비티 일부는 보이지만 다른 액티비티가 앞으로 나올 때 실행되며 아주 잠깐 실행되는 메서드이므로 데이터 저장 등 무거운 작업을 하면 안된다.
5. onStop()
액티비티가 보이지 않을 때 메서드가 호출되며 이 작업에서 데이터 저장, 네트워크 연결 등 무거운작업을 처리한다.
6. onRestart()
다른 액티비티에서 뒤로가기 버튼을 통해 돌아오거나 홈으로 나갔다 돌아올 때 호출된다.
7. onDestroy()
활동이 종료되는 경우나 화면회전 등 구성이 변경될 때 호출되는 메소드이다.
Fragment
프래그먼트는 항상 액티비티 내에서 만들어져야하며 해당 프래그먼트는 호스트 액티비티의 생명주기에 직접적으로 영향을 받는다. 액티비티가 일시정지되면 프래그먼트도 멈추며 액티비티가 꺼지면 프래그먼트도 꺼진다.
1. onAttatch()
프래그먼트가 액티비티에 연결될 때 호출되며 프래그먼트가 완전히 생성된게 아니다.
2. onCreate()
프래그먼트가 실행될 때 호출되는 메서드이며 대부분의 초기화작업을 여기서 실행한다. 뷰 관련한 작업은 실행할 수 없다.
3. onCreateView()
프래그먼트가 UI를 그릴때 생성되는 메서드이다. 바인딩 작업을 여기서 한다.
4. onActivityCreated()
액티비티에서 onCreate()실행이 끝난 후 호출되며 이때 액티비티와 프래그먼트의 View가 생성되어 연결된 상태이고 변경작업이 가능하다.
5. onStart()
액티비티가 시작됨(Started) 상태에 들어가면 호출되는 메서드이며 사용자에게 프래그먼트가 보이게되고 메소드에서 UI관리 코드를 초기화한다. 이 메서드는 굉장히 빠르게 마무리되고 Resumed(재개 상태)로 들어간다.
6. onResume()
onResume() 메소드가 호출되면 사용자와 상호작용 한다. 프로그램이 일시 정지되어 onPause()를 호출하고 다시 재개되면 onResume() 메소드가 다시 호출된다.. 재개 상태로 전환될 때마다 필요한 초기화 작업들을 수행해야한다.
7. opPause()
onPause() 메소드는 사용자가 Fragment를 떠나면 첫 번째로 호출된다. 사용자가 돌아오지 않을 수도 있으므로 여기에 UI 관련 처리를 정지하고, 중요한 데이터를 저장한다.
8. onStop()
onStop() 메소드는 Fragment가 완전히 가려지는 경우 onPause()에 이어 호출된다. 사용자가 다시 Activity를 호출하면 다시 복원될 수 있는 상태이다.
9. onDestroyView()
onDestroyView() 메소드는 Fragment와 관련된 view가 제거될 때 호출되는 메소드입니다. backstack을 사용했다면, 다시 해당 Fragment로 돌아올 때 onCreateVeiw()가 호출된다.
10. onDestroy()
onDestroy() 메소드는 Activity 또는 Fragment가 소멸되기 전에 호출된다.
11. onDetach()
onDetach() 메소드는 Fragment가 완전히 소멸되고, Activity와의 연결도 끊어질 때 호출된다
'TIL > 공부' 카테고리의 다른 글
03/14 Activity Intent Flag, Task (1) | 2024.03.14 |
---|---|
03/08 코틀린 비동기 프로그래밍 (0) | 2024.03.08 |
03/06 코틀린 Context (0) | 2024.03.07 |
03/04 코틀린 Regex - 정규 표현식(Regular Expression) (0) | 2024.03.04 |
02/27 Kotlin 바인딩 (0) | 2024.02.27 |