액티비티의 생명주기에 대해 알아보자

김태영·2024년 6월 24일
0

TIL

목록 보기
35/70
post-thumbnail

오늘 공부한 것

- 알고리즘 의상, 기능개발, 프로세스 풀이
- 액티비티 생명주기 공부

생명주기가 뭐지?

우리가 앱을 시작하고, 화면을 이동하고, 앱을 벗어나거나 다시 돌아올 때 액티비티의 상태는 당연히 변화할 것이다. 액티비티 클래스에서는 이러한 상태 변화를 알려주는 콜백 메서드를 제공하며 이를 생명주기 콜백 메서드라 한다. 다시말해, 액티비티의 상태가 변화할 때마다 생명 주기 콜백이 호출된다. 필요한 경우에 따라 콜백 메서드를 재정의해서 원하는 방식으로 동작할 수 있게 할 수 있다.

생명주기 메서드

메서드 이름액티비티 상태설명
onCreate()생성됨액티비티를 생성할 때 (최초 실행)
onStart()화면 표시 직전화면에 보여지기 시작할 때
onResume()실행 중, 화면 표시 직후화면에 나타나 있고 실행중일 때
onPause()일시중지됨액티비티 화면의 일부가 다른 액티비티에 가려졌을 때
onStop()중지됨다른 액티비티의 실행으로 완전히 가려졌을 때
onDestroy()종료, 소멸되기 전 상태액티비티 종료

onCreate

  • 반드시 구현해야 되는 메서드
  • 전체 생명 주기 중 한 번만 발생
  • 메서드 실행 완료 후 onStart()onResume() 메서드를 연속으로 호출
  • 최초 실행시 해야 하는 작업을 구현한다. ex. 화면 설정, 뷰 생성 등

onStart()

  • 액티비티가 화면에 보여지기 직전에 호출
  • 보통 화면에 진입할 때마다 실행되어야 하는 작업을 구현한다.

onResume()

  • 액티비티가 화면에 보여진 직후에 호출
  • 사용자와 상호작용 한다.
  • 어떤 일(다른 액티비티로 이동하거나 화면이 꺼지는 등)이 발생해 앱이 포커스를 잃을 때까지 유지

onPause()

  • 액티비티가 화면에 보이지 않은 직후에 호출
  • 액티비티가 포커스를 잃을 때, 또는 반투명 액티비티가 열릴 때
  • 다른 액티비티가 호출되기 전에 실행
  • 사용자가 다시 돌아오지 않을 수 있기 때문에 변경사항을 저장한다.
  • 실행 시간이 매우 짧아 무거운 작업을 하면 안된다. ex. 네트워크 호출, 사용자 데이터 저장 등

onStop()

  • 다른 액티비티에 의해 완전히 가려졌을 때, 종료될 때 호출
  • 필요하지 않은 리소스를 해제하거나 조정
  • CPU를 비교적 많이 사용하는 종료 작업 실행 ex. 데이터베이스 저장
  • 이 상태에서 액티비티가 다시 호출되면 onRestart() 메서드 호출
  • 이 상태에서 액티비티가 실행을 종료하면 onDestroy() 메서드 호출

onDestroy()

  • 액티비티가 소멸되기 전에 호출
  • 액티비티를 완전히 닫거나 멀티 윈도우 전환과 같은 구성 변경으로 인해 시스템이 일시적으로 활동을 소멸하는 경우 호출
  • onStrop()과 같이 이전 콜백에서 해제되지 않은 모든 리소스를 해제한다.

onRestart()

  • onStrop() 이후에 액티비티가 다시 호출되는 경우에 호출
  • 이후에 onStart()가 호출된다.
profile
화이팅

0개의 댓글