Study/Android

액티비티 생명주기

hegunhee 2021. 12. 20. 19:58

지난 글중에 액티비티 생명주기에대해 정리한것이 있지만 책을 보고 복습 겸 다시한번 정리하겠습니다.

위 글은 Do it! 깡쌤의 안드로이드 앱 프로그래밍 with 코틀린(강성윤 지음)을 보고 정리한 내용입니다.

 

액티비티 상태


액티비티를 다룰 때 중요한 점은 생명주기를 이해하고 각 상황에 적절하게 대처하는 것입니다.

여기서 생명주기(life cycle)란 액티비티가 생성되어 소멸하기까지의 과정을 말하며, Activity 클래스는 액티비티가 상태변화를 알아차릴 수 있는 여러가지 콜백 함수를 제공합니다.

이 콜백 함수에 액티비티의 상태가 바뀔 때마다 앱이 어떻게 동작해야 하는지를 구현합니다.

액티비티의 상태는 다음처럼 크게 3가지로 구분할 수 있습니다.

  • 활성 : 액티비티 화면이 출력되고 있고 사용자가 이벤트를 발생시킬 수 있는 상태
  • 일시 정지: 액티비티의 화면이 출력되고 있지만 사용자가 이벤트를 발생시킬 수 없는 상태
  • 비활성: 액티비티의 화면이 출력되고 있지 않은 상태

활성 상태

활성 상태는 액티비티가 실행되어 화면에 나오고 사용자 이벤트를 처리할 수 있는 상태를 의미합니다.

처음에 실행된 액티비티는 onCreate() -> onStart() -> onResume() 함수까지 호출됩니다. 

그리고 setContentView() 함수로 출력한 내용이 액티비티 화면에 나옵니다.

물론 onCreate() 함수는 최초에 한 번만 호출되고 onStart()나 onResume()함수는 반복해서 호출할 수 있으므로, 일반적으로 setContentView()는 onCreate() 함수에서 많이 호출합니다.

 

일시 정지 상태

일시 정지 상태는 onPause() 함수까지 호출된 상태입니다. 일반적으로 액티비티가 화면에 보이지만 포커스를 잃어 사용자 이벤트를 처리할 수 없는 상태를 의미합니다.

가장 대표적인 예는 화면 분할 모드에서 확인할 수 있습니다.

만약 다시 앱이 포커스를 얻는다면 onResume()함수가 호출됩니다. 

 

비활성 상태

비활성 상태란 액티비티가 종료되지 않고 화면에만 보이지 않는 상태를 말합니다. 인텐트로 다른 액티비티를 실행했거나 홈 버튼을 눌러 런쳐 화면으로 이동해 액티비티가 보이지 않는 상황입니다. 안드로이드폰의 홈 버튼은 런쳐 앱의 액티비티를 실행됩니다. 홈 버튼을 눌렀을때 화면에 보이던 액티비티가 종료되지는 않고 단지 비활성 상태가 되는 것 뿐입니다.

 

활성 상태에서 비활성 상태가 되면 onPause() -> onStop() 함수까지 호출됩니다. 그리고 다시 액티비티를 화면에 보이면 onRestart() -> onStart() -> onResume() 함수까지 호출되어 활성 상태가 됩니다.

 

여기서 화면전환의 경우 onCreate() 다시 호출하기때문에 savedInstanceState에 내용을 저장해 불러오는것도 좋은 방법이지만 ViewModel 클래스를 이용해 데이터를 저장하는것도 좋은 방법입니다.

'Study > Android' 카테고리의 다른 글

바인딩 서비스  (0) 2021.12.29
서비스 컴포넌트  (0) 2021.12.24
인텐트  (0) 2021.12.19
브로드캐스트 리시버 BroadCast Receiver  (1) 2021.10.30
액티비티의 life cycle  (0) 2021.10.29