1. onCreate()
생명주기동안 딱 한번만 실행되는 메서드로 액티비티 최초 실행시 수행할 작업들을 넣는다. 초기화 작업이나 뷰를 불러오는 기능들이 대부분 여기에 들어있다. ON_CREATE 이벤트가 발생하며 유지되지는 않는다.
이후 onStart() 메서드를 호출한다.
2. onStart()
액티비티가 보이기 직전에 호출되는 메서드며 화면에 올라올 때마다 실행해야하는 코드를 작성한다. ON_START 이벤트가 발생하며 UI를 유지하는 코드가 초기화된다.
이후 onResume() 메서드를 호출한다.
3. onResume()
액티비티 일부가 보일 때 호출되며 전화를 받고 오는 등 액티비티가 일시정지 되었다가 돌아오는 경우 호출된다. ON_RESUME 이벤트가 발생하며 화면이 보일 때 초기화되어야 하는 코드들이 들어간다.(카메라 등 하드웨어 액세스 등)
수행시간이 짧기 때문에 코드가 무거우면 안된다.
화면이 일부분 보이지 않게 되었을 때 onPause() 메서드를 호출한다.
4. onPause()
사용자의 포커스가 다른 액티비티로 이동할 때 처음 호출되는 메서드다. 호출되는 시간이 매우매우 짧기 때문에 데이터 저장, 네트워크 호출 등 무거운 작업을 수행하는데 적합하지 않다. 구글에서도 해당작업을 할당해서는 안 된다고 볼드체로 박아놨다. 해당 작업들은 아래 onStop() 메서드에 작성하는 것을 권장한다. 다만 베터리 수명에 악영향을 줄 수 있는 하드웨어나 시스템 리소스를 할당 해제하는 코드는 작성하는 것을 권장한다.
이 메서드는 우리가 멀티윈도우를 사용할 때 자주 볼 수 있다. 멀티윈도우로 A와 B를 띄워놓고 A를 작업할 때 B에서 호출되는 메서드가 onPause() 메서드이다. 액티비티가 화면에서 완전히 사라지기 전까지 ON_PAUSE 상태를 유지한다.
이후 해당 액티비티에 포커스가 돌아오면 onResume() 메서드를, 완전히 화면에서 사라지면 onStop() 메서드가 호출된다.
5. onStop()
액티비티가 완전히 보이지 않을 때 메서드가 호출되며 이 작업에서 데이터 저장, 네트워크 연결 등 무거운 작업을 처리한다.
이 메서드에서는 자원소모가 크거나 필요없는 리소스를 해제하거나 범위를 조절해야한다.
화면에 보이지 않는데 카메라에서 데이터를 계속 받아오거나 GPS기능의 정밀도가 높을 필요가 없다. 또한 정보를 저장할 타이밍을 모르겠으면 onStop() 에서 저장하면 된다.
UI관련 중지작업 역시 onStop() 에서 진행하는게 좋다. onPause() 는 화면이 완전히 가려지는 것이 아니기 때문에 onPause()에서 UI중지작업을 진행하면 포커스를 옮길 때마다 UI가 사라지거나 멈추는 상황이 발생할 것이다.
만일 안드로이드에서 리소스가 부족하다고 판단하면 해당 상태인 app 프로세스를 종료한다.
해당 액티비티를 다시 불러오면 onRestart() 메서드를, 액티비티가 종료될때는 onDestroy() 메서드를 호출한다.
6. onRestart()
다른 액티비티에서 뒤로가기 버튼을 통해 돌아오거나 홈으로 나갔다 돌아올 때 호출된다.
이후 생명주기에 따라 onStart(), onResume() 이 차례로 호출된다.
7. onDestroy()
활동이 종료되는 경우나 화면회전 등 액티비티가 소멸될 때 호출되는 메소드이다.
구성변경으로 인해 해당 액티비티가 다시 호출된다면 액티비티의 관련 뷰데이터가 들어있는 ViewModel 객체를 통해 호출되는 액티비티에 데이터를 넘겨주고 다시 onCreat()가 호출된다.
만약 다시 생성되지 않으면 onClear()라는 메서드가 호출되어 모든 데이터를 정리한다.
'TIL > 공부' 카테고리의 다른 글
03/29 주특기 2주차 수준별 과제(3) - Fragment LifeCycle (0) | 2024.03.31 |
---|---|
03/28 주특기 2주차 수준별 과제(2) - Activity Stack (0) | 2024.03.28 |
03/25 0dp와 wrap_content, match_parent (0) | 2024.03.25 |
03/25 GuideLine과 Barrier (1) | 2024.03.25 |
03/25 dp와 sp (0) | 2024.03.25 |