지난 글중에 액티비티 생명주기에대해 정리한것이 있지만 책을 보고 복습 겸 다시한번 정리하겠습니다.
위 글은 Do it! 깡쌤의 안드로이드 앱 프로그래밍 with 코틀린(강성윤 지음)을 보고 정리한 내용입니다.
액티비티 상태
액티비티를 다룰 때 중요한 점은 생명주기를 이해하고 각 상황에 적절하게 대처하는 것입니다.
여기서 생명주기(life cycle)란 액티비티가 생성되어 소멸하기까지의 과정을 말하며, Activity 클래스는 액티비티가 상태변화를 알아차릴 수 있는 여러가지 콜백 함수를 제공합니다.
이 콜백 함수에 액티비티의 상태가 바뀔 때마다 앱이 어떻게 동작해야 하는지를 구현합니다.
액티비티의 상태는 다음처럼 크게 3가지로 구분할 수 있습니다.
- 활성 : 액티비티 화면이 출력되고 있고 사용자가 이벤트를 발생시킬 수 있는 상태
- 일시 정지: 액티비티의 화면이 출력되고 있지만 사용자가 이벤트를 발생시킬 수 없는 상태
- 비활성: 액티비티의 화면이 출력되고 있지 않은 상태

활성 상태
활성 상태는 액티비티가 실행되어 화면에 나오고 사용자 이벤트를 처리할 수 있는 상태를 의미합니다.
처음에 실행된 액티비티는 onCreate() -> onStart() -> onResume() 함수까지 호출됩니다.
그리고 setContentView() 함수로 출력한 내용이 액티비티 화면에 나옵니다.
물론 onCreate() 함수는 최초에 한 번만 호출되고 onStart()나 onResume()함수는 반복해서 호출할 수 있으므로, 일반적으로 setContentView()는 onCreate() 함수에서 많이 호출합니다.
일시 정지 상태
일시 정지 상태는 onPause() 함수까지 호출된 상태입니다. 일반적으로 액티비티가 화면에 보이지만 포커스를 잃어 사용자 이벤트를 처리할 수 없는 상태를 의미합니다.
가장 대표적인 예는 화면 분할 모드에서 확인할 수 있습니다.
만약 다시 앱이 포커스를 얻는다면 onResume()함수가 호출됩니다.
비활성 상태
비활성 상태란 액티비티가 종료되지 않고 화면에만 보이지 않는 상태를 말합니다. 인텐트로 다른 액티비티를 실행했거나 홈 버튼을 눌러 런쳐 화면으로 이동해 액티비티가 보이지 않는 상황입니다. 안드로이드폰의 홈 버튼은 런쳐 앱의 액티비티를 실행됩니다. 홈 버튼을 눌렀을때 화면에 보이던 액티비티가 종료되지는 않고 단지 비활성 상태가 되는 것 뿐입니다.
활성 상태에서 비활성 상태가 되면 onPause() -> onStop() 함수까지 호출됩니다. 그리고 다시 액티비티를 화면에 보이면 onRestart() -> onStart() -> onResume() 함수까지 호출되어 활성 상태가 됩니다.
여기서 화면전환의 경우 onCreate() 다시 호출하기때문에 savedInstanceState에 내용을 저장해 불러오는것도 좋은 방법이지만 ViewModel 클래스를 이용해 데이터를 저장하는것도 좋은 방법입니다.
'Study > Android' 카테고리의 다른 글
| 바인딩 서비스 (0) | 2021.12.29 |
|---|---|
| 서비스 컴포넌트 (0) | 2021.12.24 |
| 인텐트 (0) | 2021.12.19 |
| 브로드캐스트 리시버 BroadCast Receiver (1) | 2021.10.30 |
| 액티비티의 life cycle (0) | 2021.10.29 |