안드로이드 수명 주기

강현성·2022년 8월 10일
0

android

목록 보기
4/18

1. 안드로이드 수명 주기

안드로이드 앱이 실행된 후 종료될 때까지 많은 상태 변화가 일어나는데 각각의 상태에 맞춰 특정 작업들이 실행돼야 한다. 예를 들어 유튜브를 중간까지 보다가 카톡이와 답장을 하고 다시 유튜브를 실행하면 이전에 보던 영상에 중간지점부터 실행돼야 한다. 즉, 유튜브가 사용자의 포커싱을 완전히 잃기 전에 보던 영상과 시간을 저장한 뒤 카카오톡으로 포커싱을 바꾸고 카카오톡에서 해야 하는 작업들을 끝낸 뒤 다시 유튜브가 재시작 될 때 이전 영상과 시간을 불러와야 한다. 이러한 작업들이 모두 안드로이드 수명 주기 안에서 일어나게 된다.

안드로이드 수명 주기는 onCreate() -> onStart() -> onResume() -> [Running] -> onPause() -> onStop() -> onDestroy() 순으로 이루어 진다.

각각 메서드의 역할을 보면

  • onCreate()
    액티비티가 생성될 때 가장 먼저 실행되고 최초로 딱 한 번만 실행된다.
    그렇기 때문에 화면 레이아웃 정의, 뷰 바인딩, 데이터 바인딩 등의 작업들을 해준다.

  • onStart()
    액티비티가 화면에 표시되기 직전에 호출된다.

  • onResume()
    현재 액티비티를 다른 액티비티가 덮었다거나 앱을 사용하는 도중 전화가 오거나, 기기 화면이 꺼지는 등의 상황으로 액티비티가 잠시 일시정지 되었다가 돌아오는 경우 호출된다. 해당 상황이 발생하면 onPause() 호출됨
    액티비티가 실행되다 다른 화면으로 전환된 후 다시 돌아왔을 때 이어서 실행해야 하는 작업이 있다면 해당 메서드 안에서 수행한다.

  • onPause()
    액티비티가 포커스를 잃어버리면 호출된다. 액티비티가 포커스를 잠시 잃는거기 때문에 해당 메서드안에서 데이터 저장, 네트워크 호출 등 무거운 작업을 하면 안된다. 작업이 완료되기 전에 메서드가 종료될 수 있기 때문이다. 해당 작업들은 onStop(), onDestroy()에서 수행 해주면 된다.

  • onStop()
    액티비티가 완전히 보이지 않으면 호출된다. 데이터 저장, 네트워크 호출 등 무거운 작업은 해당 메서드 안에서 수행한다.

  • onRestart()
    홈 버튼을 눌렀다가 다시 앱을 켰을 때 등의 상황에서 호출된다.

  • onDestroy()
    finish() 등 앱을 완전히 종료할 경우 호출된다.

문제1. MainActivity가 실행되다 SubActivity가 실행될 때 호출 되는 메서드는?

D/MainActivity: onPause()
D/SubActivity: onCreate()
D/SubActivity: onStart()
D/SubActivity: onResume()
D/MainActivity: onStop()

문제2. SubActivity를 실행하다 finish()로 종료하고 다시 MainActivity가 실행될 때 호출 되는 메서드는?

D/SubActivity: onPause()
D/MainActivity: onRestart()
D/MainActivity: onStart()
D/MainActivity: onResume()
D/SubActivity: onStop()
D/SubActivity: Destroy()

문제3. MainActivity 실행하다 홈 화면 누른 뒤 다시 실행했을 때 호출 되는 메서드는?

D/MainActivity: onPause()
D/MainActivity: onStop()
D/MainActivity: onRestart()
D/MainActivity: onStart()
D/MainActivity: onResume()

profile
Hello!

0개의 댓글