Home 안드로이드의 Activity와 Lifecycle
Post
Cancel

안드로이드의 Activity와 Lifecycle

마지막 업데이트 : 2022-03-28 17:38:22 +0900


안드로이드의 Activity와 Lifecycle

특징

  • 액티비티는 유저가 화면을 다루는 것에 초점이 맞춰졌져 있으며, 거의 대부분의 액티비티는 유저와 상호 작용한다.
  • 화면을 구성하는 컴포넌트로서, 이러한 액티비티들이 모여 하나의 앱을 구성한다.
  • 앱을 시작할 때 항상 같은 화면에서 시작되지 않는다. 즉, 앱은 다른 프로그래밍 언어들의 main()과 같은 시작점이 존재하지 않는다.
    • 단지 기본으로 설정되는 액티비티가 있으며 이 액티비티는 앱을 종료하고 다시 실행할 때 표시된다.
    • 알림창에 있는 카카오톡 메시지를 클릭하면 앱의 기본 화면이 아닌 메시지 화면으로 넘어가는 것
  • 현재 액티비티에서 다른 앱의 액티비티를 실행할 수 있다.
    • 카카오톡의 프로필 사진 변경 액티비티에서 사진첩의 특정 액티비티를 실행해 사진을 등록하는 것

액티비티 수명 주기 관리

  • Activity Lifecycle이라고도 한다.
  • 각각의 액티비티는 Lifecycle이라는 수명 주기가 존재하는데, 액티비티에서 발생하는 여러 상태들을 의미한다.
  • 액티비티들의 상태는 안드로이드 시스템에서 관리하며 특정 이벤트 (실행, 화면 전환, 종료 등)에 대한 콜백이 구현되어 있다.
  • 총 7가지의 콜백이 존재한다.
    1. onCreate : 시스템에서 액티비티가 생성될 때 실행되며 필수로 구현되어야 할 부분이다. 이 메서드는 전체 수명 주기 동안 한 번만 발생해야하기 때문에 데이터를 바인딩하거나 뷰(View)와 연결하는 등의 작업을 진행할 때 사용된다.

    2. onStart : 액티비티들이 사용자에게 표시되고 사용자와 상호작용할 수 있도록 준비하는 부분이다.

    3. onResume : 앱이 사용자와 상호작용할 수 있도록 해주는 부분이며, 어떤 이벤트가 발생하기 전까지 사용자의 입력을 대기한다.

    4. onPause : 사용자가 액티비티에서 벗어났을 때(전화가 오거나 홈으로 가는 경우 등) 시스템에서 이 메소드를 먼저 실행한다. 이 메소드는 아주 잠깐 실행되기 때문에 UI관련 리소스와 작업을 완전히 해제하거나 데이터를 저장, 네트워크 호출 등의 부하가 큰 작업은 onStop메소드에 작성하는 것이 좋다. 그리고 멀티윈도우나 Share버튼을 클릭했을 때처럼 UI는 보이지만 포커스를 잃었을 때(상호작용이 불가능할 때) onPause가 호출된다.

    5. onStop : 액티비티가 화면에서 완전히 벗어났을 때 실행되는 메소드이며 보여지지 않는 동안 애니메이션 효과 등 필요하지 않은 리소스를 해제하거나 조정할 때 사용할 수 있다. 단, 액티비티가 중단되면 시스템에서 해당 앱을 소멸시킬 수 있는데 이때 onCreate의 매개변수를 이용해 종료 직전의 앱 상태를 복구할 수 있다.

    6. onRestart : 액티비티가 중지된 상태에서 다시 시작하려고 할 때, (앱 실행 도중 홈 버튼을 눌렀다가 다시 앱 화면으로 넘어오는 과정) 시스템에서 이 메소드를 호출한다.

    7. onDestroy : 액티비티가 소멸되기 전 호출되는 메소드로, 아직 소멸되지 않은 리소스들을 여기서 소멸해주어야 한다.

  • Lifecycle에서 onCreate, onDestroy는 한 번만 호출된다.

  • 전체적인 Life Cycle은 다음과 같다.

    activity_lifecycle


[출처]

  • https://developer.android.com/reference/kotlin/android/app/Activity
  • https://developer.android.com/guide/components/activities/intro-activities?hl=ko
This post is licensed under CC BY 4.0 by the author.

[Kotlin] object 키워드

인텐트 및 인텐트 필터

Comments powered by Disqus.