Activity LifeCycle ?

기존에 Activity LifeCycle에 대한 글을 적었던 적이 있다. 너무 이론적인 내용이라, 실질적인 내용 위주로 다시 정리해보려고 한다.

먼저, Activity LifeCycle 은 간단하게 얘기하면 Activity는 활동 수명 주기 단계에서 6가지의 콜백 함수들이 호출되며 이루어진다.

콜백 - 어떤 이벤트가 발생한 후에 호출하는 함수(메서드)

이번에는 Activity LifeCycle 내에 있는 6가지 콜백 함수들이 실제로 어떤 이벤트가 발생할 때 호출되는 지
Override하여 사용할 때, 어떤 점을 유의해야 하는 지에 대해 알아볼 것이다.


일단 위 사진을 한 흐름으로 설명한다면 이러하다.

  • 액티비티가 실행되었을 때, onCreate , onStart , onResume 이 빠르게, 순차적으로 실행이 된다.
    onResume이 실행된 이후에는 사용자에게 화면이 보여지는 것

  • 사용자가 Back 버튼이나 Home 버튼을 눌러, 화면을 벗어날 때, 그 화면 ActivityonPauseonStop 이 순차적으로 호출되는 것.

  • 다시 App으로 돌아가게 되면 onStop 상태에서 onRestart가 호출된다. 그리고 onStartonResume이 호출되며 사용자에게 화면이 보여지는 것이다.

  • 하지만, 실행 중인 App 목록에서 완전히 제거되거나 시간이 오래지나 제거되었을 때 에는? onDestroy가 호출되는 것.

  • 완전히 kill된 이후에, 다시 호출될 때는 onCreate부터 다시 호출된다.


이러한 Activity LifeCycle 에서 가장 중요한 것 ?

"적시에 알맞은 처리를 하는 것"

  • onCreate - Activity가 생성되고 최초 한 번 호출되는 콜백이므로, 최초 한 번만 호출되는 코드를 작성하는 것이 좋다.

    • ex) Layout Inflate or 데이터를 초기화하는 과정.
  • onStart - 한 번 호출되었다가, onRestart를 호출하고 다시 되돌아왔을 때, 한 번 더 호출 될 수 있으므로

    • ex) 애니메이션의 실행 or 데이터를 갱신 하는 과정들을 실행하는 것이 좋다.
  • onResume - 이 Activity가 화면에서 보여지고 있다는 것을 의미. "Activity가 Focus를 얻었다."

    • ex) Focus를 얻었을 때, 반드시 처리해야 하는 작업을 onResume에서 처리해주는 것이 좋다.
  • onPause - onResume과 반대로, "Activity가 Focus를 잃었다."

    • ex) onResumeonPause는 마찬가지로 자주 호출될 수 있기 때문에, 너무 오래걸리는 연산을 여기에서 수행하는 것은 좋지 않다.
  • onStop - onStart와 대응해서 생각하자. 이 Activity를 종료하고 다른 App을 사용하고 있는 경우라고 생각하자.

    • ex) 애니메이션 중단 or 데이터 갱신 처리 중단
  • onDestroy - 아예 메모리에서 정리하는 단계.

    • ex) onStop에서 정리하지 못한 작업을 마저 수행하는 것이 좋다.
profile
Yoon's Dev Blog

1개의 댓글

comment-user-thumbnail
2022년 11월 4일

와 너무 유익해요!

답글 달기