Domain/Android

[Android] 액티비티의 생명주기 (Activity Lifecycle)

by Donghwan 2021. 9. 28.

Activity 클래스는 활동이 상태 변화(시스템이 활동을 생성, 중단 또는 다시 시작하거나, 활동이 있는 프로세스를 종료하는 등)를 알아차릴 수 있는 여러 콜백을 제공합니다.

개발자는 이러한 생명 주기 콜백 메서드를 통해 Activity의 작동을 제어 할 수 있습니다. 예를 들어 스트리밍 동영상 플레이어를 빌드하는 경우, 사용자가 다른 앱으로 전환할 때 동영상을 일시중지하고 네트워크 연결을 종료하는 행동을 제어할 수 있습니다. 각 콜백은 Activity 상태 변화에 적합한 특정 작업을 실행할 수 있도록 합니다. 적시에 알맞은 작업을 하고 적절하게 전환을 처리하면 앱이 더욱 안정적으로 기능할 수 있습니다. 예를 들어 수명 주기 콜백을 잘 구현하면 앱에서 다음과 같은 문제가 발생하지 않도록 예방하는 데 도움이 될 수 있습니다.

  • 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 문제
  • 사용자가 앱을 활발하게 사용하지 않는 경우 귀중한 시스템 리소스가 소비되는 문제
  • 사용자가 앱에서 나갔다가 나중에 돌아왔을 때 사용자의 진행 상태가 저장되지 않는 문제
  • 화면이 가로 방향과 세로 방향 간에 회전할 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제

 

생명 주기 콜백

onCreate()

onCreate()는 시스템이 먼저 활동을 생성할 때 실행되는 것으로, 필수적으로 구현해야 합니다. onCreate() 메서드에서 활동의 전체 수명 주기 동안 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행합니다.

 

onStart()

활동이 시작됨 상태에 들어가면 시스템은 이 콜백을 호출합니다. 이 콜백이 호출되면 활동이 사용자에게 표시되고, 포그라운드에 보내 상호작용할 수 있도록 준비합니다. 예를 들어 이 메서드에서 앱이 UI를 관리하는 코드를 초기화합니다. 이 단계에서는 아직 사용자와 상호작용은 불가능한 상태입니다.

 

onResume()

onResume()은 onStart()의 다음에 호출되는 콜백으로 사용자와 상호작용 하는 단계입니다. 활동이 재개되어 포그라운드에 표시되면 시스템이 호출하는 콜백입니다. 이 콜백이 호출되어야 Activity가 온전히 작동하는 상태라고 할 수 있습니다. 화면을 다시 작성하는 상황이 아닌 일시적인 정지 후 활성화 되는 경우에 필요한 코드를 작성합니다.

 

onPause()

사용자가 활동을 떠나는 것을 나타내는 첫 번째 신호로 이 메서드를 호출합니다. 하지만 해당 활동이 항상 소멸되는 것은 아닙니다. 활동이 포그라운드에 있지 않게 되었다는 것을 나타냅니다.

 

onStop()

활동이 사용자에게 더 이상 표시되지 않으면 중단됨 상태에 들어갈 때, 이 콜백이 호출됩니다. 이는 예를 들어 새로 시작된 활동이 화면 전체를 차지할 경우에 적용됩니다. 시스템은 활동의 실행이 완료되어 종료될 시점에 onStop()을 호출할 수도 있습니다.

 

onDestroy()

활동이 소멸되기 전에 호출됩니다. 사용자가 활동을 완전히 닫거나 활동에서 finish()가 호출되어 활동이 종료되는 경우 또는 구성 변경 (예: 기기 회전 또는 멀티 윈도우 모드)으로 인해 시스템이 일시적으로 활동을 소멸시키는 경우에 호출 됩니다.

 


참고자료

  • Android Devloper
728x90
반응형

댓글