Everyday Growing Engineer 2023. 2. 27. 08:42

Activity LifeCycle에는 onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy(), onRestart()가 있다.

 

Activity LifeCycle

1) onCreate()

  • 액티비티가 Launch되고 최초 실행될때 호출.
  • 생명주기 통틀어서 단 한 번만 수행되는 메소드.
  • 필요한 리소스들 초기화

2) onStart()

  • Activity가 화면에 표시되기 직전에 호출됨
  • 화면에 진입할 때마다 실행되어야 하는 작업을 이곳에 구현함
  • BroadcastReceiver는 이 단계에서 등록을 하는것이 좋음.

3) onResume()

  • Activity가 화면에 보여지는 직후에 호출됨
  • 사용자한테 화면에 보여지고 상호작용하는 메서드이다.
  • RecyclerView나 ListView 새로 고침.
    • 새로 작성된 내용을 서버에서 불러오려면 여기다 추가. (onCreate는 단 한번만 불러오기 때문에)

4) onPause()

  • 사용자가 화면을 떠날 때 시스템이 첫 번째로 이 메서드를 호출한다.
  • 현재 Activity가 사용자에게 포커스아웃 되어있는 상태
  • 다른 Activity가 호출되기 전에 실행되기 때문에 무거운 작업을 수행하지 않도록 주의해야함
  • 일시 정지할 때 필요 없는 리소스 해체하거나 Data는 이곳에 저장 (간단한 데이터 - SharedPreference사용해서)
  • 예: 카메라 미리보기, 배터리 수명에 영향을 미칠 숫 있는 모든 리소스를 해제

5) onStop()

  • Activity가 다른 Activity에 의해 100% 가려질 때 호출되는 메소드
  • 이 상태에서 Activity가 호출되면, onRestart() 메소드가 호출됨
  • 이 메서드에서는 앱이 사용자에게 보이지 않는 동안 앱이 필요하지 않는 리소스를 해제하거나 조정해야 한다
  • 정보를 데이터베이스에 저장할 적절한 시기를 찾지 못했다면 onStop() 상태일 때 저장
  • 예를 들어 애니메이션을 일시중지하거나 세밀한 위치 업데이트에서 대략적인 위치 업데이트로 전환할 수 있습니다
  • 또한 onStop()을 사용하여 CPU를 비교적 많이 소모하는 종료 작업을 실행해야 합니다. 예를 들어 정보를 데이터베이스에 저장할 적절한 시기를 찾지 못했다면 onStop() 상태일 때 저장할 수 있습니다.

6) onDestroy()

  • Activity가 소멸되기 직전에 호출됨
  • Activity가 종료되는 경우
    • 사용자: finish(), onBackPressed() 
    • 시스템: 메모리부족(프로세스 종료)
    • onStop(), onDestroy() 메소드는 메모리 부족이 발생하면 스킵될 수 있음

7) onRestart()

  • onStop()이 호출된 이후에 다시 기존 Activity로 돌아오는 경우에 호출되는 메소드
  • onRestart()가 호출된 이후 이어서 onStart()가 호출됨

 

참고