본문 바로가기

Android

[Adroid] Activity LiftCycle

액티비는 아래 그림과 같이 생명주기(LiftCycle)를 가지고 있습니다.

이 생명주기에 따라 적절한 메서드가 호출되므로 이를 숙지해서 액티비티를 작성해야 합니다.

 

액티비티의 생명주기는 onCreate() > onStart() > onResume() > onPause > onStop() > onDestroy 순으로 실행되며

경우에 따라서 onRestart() 메서드가 호출되기도 합니다. 각각의 순서에 대한 설명은 아래의 표에서 참고하시면 됩니다.

 

메소드 설명 다음 메소드
onCreate() 액티비티가 생성될 때 호출되며 사용자 인터페이스 초기화에 사용됨. onStart()
onRestart() 액티비티가 멈췄다가 다시 시작되기 바로 전에 호출됨. onStart()
onStart() 액티비티가 사용자에게 보여지기 바로 직전에 호출됨. onResume() 
or onStop()
onResume() 액티비티가 사용자와 상호작용하기 바로 전에 호출됨. onPause()
onPause() 다른 액티비티가 보여질 떄 호출 됨. 데이터 저장, 스레드 중지 등의 처리를 하기에 적당한 메소드. onResume()
or onStop()
onStop() 액티비티가 더이상 사용자에게 보여지지 않을 떄 호출됨. 메모리가 부족할 경우에는 onStop()메소드가 호출되지 않을 수도 있음. onRestart()
or onDestroy()
onDestroy() 액티비티가 소멸될 떄 호출됨. finish()메소드가 호출되거나 시스템이 메모리 확보를 위해 액티비티를 제거할 때 호출됨. X

쉽게 말해서

카카오톡을 예를 들어 보면 처음 실행을 할 때 카카오톡 로고 화면이 잠시 보인 후 마지막으로 사용했던 탭으로 진입합니다. 이때 로고가 보이는 화면이 하나의 액티비티입니다. 그 후에 진입하는 친구 목록이나 채팅 목록 외 여러 화면 또한 하나의 액티비티입니다.

 

이런 액티비티는 생명주기를 갖습니다. 카카오톡으로 다시 예를 들어보면 카카오톡을 하다가 유튜브 영상을 보기 위해 유튜브 앱을 실행하면 카카오톡 화면은 더 이상 보이지 않고 유튜브 앱 화면이 보입니다. 이때 카카오톡과 유튜브의 액티비티는 각자의 생명주기에 따라 호출되는 함수가 있습니다.

 

생명주기를 좀 더 쉽게 이해하려면 실제 화면에 표시 유무를 생각하면 됩니다.

먼저 최초로 앱을 실행하면 onCreate()가 호출되는데 이때 초기화 관련 작업을 하면 좋습니다.

다음으로 onStart()가 호출되는데 이 시점부터 사용자가 액티비티를 볼 수 있습니다.

그리고 액티비티가 실제 사용자와 상호작용이 가능한 포 그라운드에 위치하면 onResume()이 호출됩니다.

이 상태를 액티비티가 실행 중인 것으로 봅니다.

 

반대로 액티비티가 실행 중인 상태에서 사용자와 상호작용이 불가능한 상태

포커스를 읽은 상태가 되면 onPause()가 호출되고 onStop()은 액티비티가 더 이상 보이지 않을 때 호출됩니다.

그리고 액티비티가 종료되거나 앱 프로세스 자체가 종료되면 onDestroy()가 호출됩니다.

 

 

생명주기를 사용하는 이유 

 

 

  • 사용자가 앱을 사용하는 중 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 상황을 막기 위해
  • 사용자가 앱을 활발하게 사용하지 않는 경우, 시스템 리소스가 소비되지 않기 위해
  • 사용자가 앱에서 나갔다가 돌아올 때 사용자의 진행 상태가 손실되지 않기 위해
  • 화면이 가로 방향과 세로 방향 간에 회전할 경우 비정상 종료되거나 사용자의 진행상태가 손실되지 않기 위해

'Android' 카테고리의 다른 글

[Android] ListView 사용  (0) 2021.02.15
[Android] View Binding  (0) 2021.02.01
[Android] Layouts  (0) 2021.01.28
[Android] Palette (Helper)  (0) 2021.01.27