Android Activity Life Cycle์ด๋?
Android์ 4๋ ์ปดํฌ๋ํธ ์ค ํ๋์ธ ์กํฐ๋นํฐ๋ ์ฌ์ฉ์์๊ฒ UI๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ์ฌ์ฉ์์ ์ํธ์์ฉ์ ์ฃผ๋ํ๋ ์ปดํฌ๋ํธ ์ ๋๋ค. Android์ ์กํฐ๋นํฐ๋ ๊ณ ์ ์ Life Cycle์ ํตํด ์ฌ์ฉ์์ ์ํธ์์ฉ์ ํ๊ธฐ๋ ํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์จ๊ธฐ๋ ํ๋ฉฐ, ๋ค๋ฅธ ์กํฐ๋นํฐ์ ์ํธ์์ฉ์ ์งํํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์์ ํ๋์ ๋ง๋ ์กํฐ๋นํฐ์ ํ๋์ ํ๋ฅญํ๊ฒ ๊ตฌํํ๊ธฐ ์ํด์๋ ๊ฐ๋ฐ์๋ ์กํฐ๋นํฐ์ Life Cycle์ ๋ํด ํ์คํ๊ฒ ์ดํดํ๊ณ ์์ด์ผ๋ง ํฉ๋๋ค.
Activity Life Cycle์ ํ๋ฆ
Activity Life Cycle์ ์ผ๋ฐ์ ์ผ๋ก onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestroy() ์์ผ๋ก ์งํ๋ฉ๋๋ค.
onCreate
- Activity๊ฐ ์์ฑ๋ ๋ ํธ์ถ๋๋ ๊ฒ์ผ๋ก, ํ์์ ์ผ๋ก ๊ตฌํํด์ผ๋ง ํ๋ ์ฝ๋ฐฑ ๋ฉ์๋์ ๋๋ค.
- ๋ณดํต onCreate()๋ ์ ์ฒด ์๋ช ์ฃผ๊ธฐ ๋์ ํ๋ฒ๋ง ๋ฐ์ํด์ผ ํ๋ ์์ ๋ก์ง์ ์ํํฉ๋๋ค.
- ์ด ๋ฉ์๋๋ ์ถ๊ฐ์ ์ผ๋ก savedInstanceState ๋งค๊ฐ๋ณ์๋ฅผ ์์ ํ๋๋ฐ, ์ด๋ Activity์ ์ด์ ์ํ๊ฐ ์ ์ฅ๋ Bundle ๊ฐ์ฒด์ ๋๋ค.
onStart
- Activity๊ฐ ์์๋จ ์ํ์ ๋ค์ด๊ฐ๋ฉด ํธ์ถ๋ฉ๋๋ค.
- onStart()๊ฐ ํธ์ถ๋๋ฉด Activity๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ด๊ฒ ๋๊ณ , ๋ชจ๋ฐ์ผ ์ฑ์ Activity๋ฅผ ํฌ๊ทธ๋ผ์ด๋์ ๋ณด๋ด ์ฌ์ฉ์์ ์ํธ์์ฉ ํ ์ ์๋๋ก ์ค๋นํฉ๋๋ค.
- onStart() ๋งค์ฐ ๋น ๋ฅด๊ฒ ์๋ฃ๋๊ณ ๋ฐ๋ก onResume() ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋ฉ๋๋ค.
onResume
- ํด๋น ์ฝ๋ฐฑ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด ๋ชจ๋ฐ์ผ ์ฑ์ ์ฌ์ฉ์์ ์ํธ์์ฉ์ ํ๊ฒ ๋ฉ๋๋ค.
- ์ด๋ค Event๊ฐ ๋ฐ์ํ์ฌ ์ฑ์์ ํฌ์ปค์ค๊ฐ ๋ ๋ ๋๊น์ง Activity๋ ์ด ์ํ์ ๋จธ๋ฌด๋ฅด๋ฉฐ ๋ฐฉํด๋๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด Activity๋ ์ผ์์ ์ง ์ํ์ ๋ค์ด๊ฐ๊ณ onPause()๋ฅผ ํธ์ถํฉ๋๋ค.
- ๋ง์ฝ์ Activity๊ฐ ์ผ์์ ์ง ์ํ์์ ์ฌ๊ฐ๋จ ์ํ๋ก ๋์์ค๋ฉด onResume() ๋ฉ์๋๋ฅผ ๋ค์ ํ๋ฒ ํธ์ถํฉ๋๋ค. ๋ฐ๋ผ์ onResume()๋ก ๋์์ฌ๋๋ง๋ค ํ์ํ ๋ค๋ฅธ ์ด๊ธฐํ ์์ ๋ ์ํํด์ผ ํฉ๋๋ค.
onPause
- ์ฌ์ฉ์๊ฐ Activity๋ฅผ ๋ ๋๋ ์ฒซ๋ฒ์งธ ์ ํธ๋ก ์ด ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
- Activity๋ ์๋ฉธ๋๋ ๊ฒ์ด ์๋๋ผ, ํฌ๊ทธ๋ผ์ด๋์ ์์ง ์์ ๊ฒ ๋ฟ์ ๋๋ค. onPause()๋ ์์ฃผ ์ ๊น ์คํ๋๋ฏ๋ก, CPU๋ฅผ ๋ง์ด ์๊ตฌํ๋ ํฐ ์์ ์ ์ํํ๊ธฐ์๋ ์ ์ ์น ์์ต๋๋ค.
onStop
- Activity๊ฐ ์ฌ์ฉ์์๊ฒ ๋ ์ด์ ํ์๋์ง ์์ผ๋ฉด ์ค๋จ๋จ ์ํ์ ๋ค์ด๊ฐ๊ณ , ์์คํ ์ onStop()์ ํธ์ถํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด ์๋ก ์์๋ Activity๊ฐ ํ๋ฉด ์ ์ฒด๋ฅผ ์ฐจ์งํ ๊ฒฝ์ฐ์ ์ ์ฉ๋ฉ๋๋ค.
- onStop() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ์ฌ CPU๋ฅผ ๋น๊ต์ ๋ง์ด ์๋ชจํ๋ ์ข ๋ฃ ์์ ์ ์คํํด์ผ ํฉ๋๋ค. ๋ง์ฝ Activity๊ฐ ์ด ์ํฉ์์ ๋ค์ ์์๋๋ฉด onRestart()๋ฅผ ํธ์ถํ๋ฉฐ ์ด์ด์ onStart()๋ฅผ ํธ์ถํฉ๋๋ค.
onDestroy
- onDestroy()๋ Activity๊ฐ ์๋ฉธ๋๊ธฐ ์ ์ ํธ์ถ๋ฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ Activity๋ฅผ ์์ ํ ๋ซ๊ฑฐ๋, Finish() ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ ๋๋ ๊ธฐ๊ธฐ ํ์ ๋๋ ๋ฉํฐ ์๋์ฐ ๋ชจ๋(๊ตฌ์ฑ ๋ณ๊ฒฝ)์ผ๋ก ์ธํด ์์คํ ์ด ์ผ์์ ์ผ๋ก Activity๋ฅผ ์๋ฉธ์ํค๋ ๊ฒฝ์ฐ ํธ์ถ๋ฉ๋๋ค. ์ฌ๊ธฐ์ Activity๊ฐ ์๋ฉธ๋๊ธฐ ์ ์ ํ์ํ ๊ฒ์ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ณดํต Activity์ ์ ์ง๋์ด์ผํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์ onSaveInstanceState() ๋ฉ์๋์ ViewModel ํด๋์ค๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด์กดํ๋ ๋ณตํฉ์ ์ธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
Reference
https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko
Activity ์๋ช ์ฃผ๊ธฐ์ ๋ํ ์ดํด | Android ๊ฐ๋ฐ์ | Android Developers
An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map. Each activity is given a window in which to draw its user interface…
developer.android.com