✨목적: 수명 주기 내 콜백 함수를 통한 안정적 사용
안드로이드는 액티비티의 상태가 변화할 때마다, 특정 동작을 수행할 수 있도록 콜백 메소드를 제공한다.
안드로이드 개발자 가이드에는 다음과 같은 언급이 있다.
각 콜백을 사용하면 지정된 상태 변경에 적합한 특정 작업을 실행할 수 있습니다. 적시에 알맞은 작업을 하고 적절하게 전환을 처리하면 앱이 더욱 안정적으로 기능할 수 있습니다. 예를 들어 수명 주기 콜백을 잘 구현하면 앱에서 다음을 피하는 데 도움이 될 수 있습니다.
- 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 문제
- 사용자가 앱을 활발하게 사용하지 않는 경우 귀중한 시스템 리소스가 소비되는 문제
- 사용자가 앱에서 나갔다가 나중에 돌아왔을 때 사용자의 진행 상태가 저장되지 않는 문제
- 화면이 가로 방향과 세로 방향 간에 회전할 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제
총 7가지의 콜백 메소드가 지정되어 있고, 사용자가 어떤 행위를 하느냐에 따라, 다른 메소드가 호출된다. 아래는 일반적인 호출 순서에 따라 콜백 메소드를 정리해놓은 것이다.
① onCreate()
액티비티가 생성될 때, 가장 먼저 호출된다. 전체 생명주기 동안 딱 한번만 동작하며 값 초기화나 시작로직을 실행한다.
※ setContentView의 경우, xml 파일을 세팅해주는데, onCreate()의 종속적인 메소드이다.
② onstart()
액티비티의 화면이 눈에 보이게 되는 단계(VIsibility)
(This call makes the activity visible to the user // 공식문서)
③ onResume()
앱에서 활동이 포그라운드(foreground)로 전환되는 단계.
📜아래 onPause()를 읽고 오시오!
onResume()의 interrupt 처리
: onResume()를 구현하여, onPause 중에 해제되는 구성요소를 다시 초기화하고, 액티비티가 재개될 때마다 필요한 초기화 작업을 수행하게 할 수 있다.
④ onPause()
onResume() 도중 interrupt 발생 시 즉, 다른 액티비티가 보여져 해당 액티비티가 더 이상 foreground에 있지 않게 되었을 때 호출된다.
interrupt 종류
a. 앱 실행도중 방해 이벤트 발생(전화가 오는 케이스)
b. 멀티 윈도우 상 다른 앱에 포커스를 두는 경우
배터리 수명에 영향을 미치는 시스템 리소스, 하드웨어 센서 할당해제
다시 액티비티가 재개되면 메모리 상 남아있는 Activity Instance를 다시 불러와 onResume()메소드를 호출한다.
⚠️주의⚠️
아주 잠깐 호출되는 것이기 때문에, UI관련 작업 중지, 네트워크 호출, db트랜잭션 등 중요하고 긴 작업은 실행하지 않는 것이 좋다.
👉 onStop()에서 구현할 것
⑤ onStop
액티비티가 더 이상 사용자에게 보여지지 않을 때 호출
⑥ onRestart()
액티비티가 onStop()되어 멈췄가가, 다시 시작될 때 호출
⑦ onDestroy()
액티비티가 완전히 소멸될 때 호출