기존에 Activity LifeCycle
에 대한 글을 적었던 적이 있다. 너무 이론적인 내용이라, 실질적인 내용 위주로 다시 정리해보려고 한다.
먼저, Activity LifeCycle
은 간단하게 얘기하면 Activity는 활동 수명 주기 단계에서 6가지의 콜백
함수들이 호출되며 이루어진다.
콜백
- 어떤 이벤트가 발생한 후에 호출하는 함수(메서드)
이번에는 Activity LifeCycle
내에 있는 6가지 콜백 함수
들이 실제로 어떤 이벤트가 발생할 때 호출되는 지
Override
하여 사용할 때, 어떤 점을 유의해야 하는 지에 대해 알아볼 것이다.
일단 위 사진을 한 흐름으로 설명한다면 이러하다.
액티비티가 실행되었을 때, onCreate
, onStart
, onResume
이 빠르게, 순차적으로 실행이 된다.
onResume
이 실행된 이후에는 사용자에게 화면이 보여지는 것
사용자가 Back
버튼이나 Home
버튼을 눌러, 화면을 벗어날 때, 그 화면 Activity
의 onPause
와 onStop
이 순차적으로 호출되는 것.
다시 App으로 돌아가게 되면 onStop
상태에서 onRestart
가 호출된다. 그리고 onStart
와 onResume
이 호출되며 사용자에게 화면이 보여지는 것이다.
하지만, 실행 중인 App 목록에서 완전히 제거되거나 시간이 오래지나 제거되었을 때
에는? onDestroy
가 호출되는 것.
완전히 kill
된 이후에, 다시 호출될 때는 onCreate
부터 다시 호출된다.
이러한 Activity LifeCycle
에서 가장 중요한 것 ?
"적시에 알맞은 처리를 하는 것"
onCreate
- Activity가 생성되고 최초 한 번 호출되는 콜백
이므로, 최초 한 번만 호출되는 코드를 작성하는 것이 좋다.
Layout Inflate
or 데이터를 초기화
하는 과정.onStart
- 한 번 호출되었다가, onRestart
를 호출하고 다시 되돌아왔을 때, 한 번 더 호출 될 수 있으므로
애니메이션의 실행
or 데이터를 갱신
하는 과정들을 실행하는 것이 좋다.onResume
- 이 Activity가 화면에서 보여지고 있다는 것을 의미. "Activity가 Focus
를 얻었다."
Focus
를 얻었을 때, 반드시 처리해야 하는 작업을 onResume
에서 처리해주는 것이 좋다.onPause
- onResume
과 반대로, "Activity가 Focus
를 잃었다."
onResume
과 onPause
는 마찬가지로 자주 호출될 수 있기 때문에, 너무 오래걸리는 연산을 여기에서 수행하는 것은 좋지 않다.onStop
- onStart
와 대응해서 생각하자. 이 Activity
를 종료하고 다른 App을 사용하고 있는 경우라고 생각하자.
애니메이션 중단
or 데이터 갱신 처리 중단
onDestroy
- 아예 메모리에서 정리하는 단계.
onStop
에서 정리하지 못한 작업을 마저 수행하는 것이 좋다.
와 너무 유익해요!