Activity 의 생명 주기

shin_stealer·2021년 2월 4일
0

안드로이드

목록 보기
1/1
post-thumbnail

Activity 란?

  • 사전적 의미: 움직임, 활동

  • 안드로이드에서 Activity 란?

Application을 구성하는 4대 컴포넌트 중 하나이다.
사용하는 스마트폰 App에 보이는 화면 하나를 의미한다.
Activity에는 사용자 인터페이스 (UI)가 들어가게 된다.

UI의 움직임, 활동을 나타내기 때문에 Activity 라는 이름이 붙은 것이 아닐까 생각해본다.

생명 주기 (Life Cycle) 이란?

  • 사전적 의미

  • 안드로이드에서 Activity 의 '생명 주기' 란?

App에 보이는 화면(Activity)을 실행하거나, 중단하거나, 다시 시작할 때와 같이 각 상태를 구분하여 하나의 큰 흐름으로 보았을 때 주기, 순환(cycle)을 이루는 것을 의미한다.

안드로이드에서는 Activity의 각 상태마다 Callback 메소드를 제공하는는데,
개발자는 이 Callback 메소드를 사용하여 Activity가 적시에 필요한 작업을 수행하도록 구현할 수 있다.

Activity 의 생명 주기가 필요한 이유?

사용자가 어떤 Activity를 사용하는 중, 다른 이벤트가 발생할 경우 (ex - 전화, 메세지 수신) 사용중이던 Activity의 일지 정지가 필요하거나, 종료가 필요한 순간이 있다.
Activity 의 Life Cycle을 사용하면 적시에 알맞은 작업을 하고 적절하게 전환하여 App이 더욱 안정적으로 기능할 수 있게 기여한다.

다음과 같은 문제를 예방하는데 도움이 된다.

  • App 사용중 전화가 걸려올 때 비정상 종료되는 문제
  • App을 사용하지 않는 경우, 불필요한 시스템 리소스가 소비될 때
  • App을 나갔다가 다시 들어왔더니, 작성 중이었던 글이 초기화 될 때

Activity 의 생명 주기를 간략하게 나타낸 그림

각 callback 메소드 별 정리

onCreate()

  • Activity 가 최초로 생성할 때 호출 됨.
  • 보관된 상태의 Activity가 있을 경우, 그 상태를 저장 하고 있는 Bundle 객체를 매개변수로 받는다. 없을 때의 Bundle 은 null 을 담고 있다.
  • onCreate() 가 호출된 후에는 onStart()가 호출된다. 이 때는 강제종료가 불가능하다.

onStart()

  • onStart()는 Activity가 사용자에게 보여지기 직전에 호출 됨
  • 이후에는 onResume()으로 이어짐.
  • 강제종료가 불가능

onResume()

  • onResume()은 Activity가 사용자와 상호작용을 하기 직전에 호출 됨
  • Stack의 최상위에 위치한다
  • 재개하다, 다시 시작하다 라는 의미
  • 일시 정지할 때에는 onPause() 메소드로 이동 후 다시 Activity를 사용할 때 onResumre()으로 돌아온다. (ex- 전화벨 울릴 때)
  • 정지할 때에는 onStop() 으로 넘어간다. (ex- 전화 수신 버튼을 눌러서 통화 할 때)

onPause()

  • onPause()는 다른 Activity 가 활성화 되었을 때 호출 됨.
  • 다른 Activity 가 실행 되어도 단말기 화면에 기존 Activity 가 조금이라도 남아 있다면 onPause 가 실행 됨.
  • Activity 사용 중 전화 벨이 울렸을 때, 기존 화면 위에 겹쳐서 나타난 화면

onStop()

  • 다른 Activity 가 기존 Activity를 완전히 가려서 보이지 않게 되면 호출 됨.
  • 강제 종료 가능함

onDestroy()

  • Activity 가 종료되기 직전에 호출 됨

어떻게 하면 생명주기를 잘 활용할 수 있을까?

참고자료 - 안드로이드 공식 문서
https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko

profile
I am a Blacksmith.

0개의 댓글