๊ฐ์
- ์กํฐ๋นํฐ์ ์ํ์ ๋ํด ์ดํดํ๋ค.
- ์กํฐ๋นํฐ์ ์ํ ๋ณ๊ฒฝ์ ์ ๋ฐํ๋ ์ด๋ฒคํธ์ ๋ํด ํ์ ํ๋ค.
- ์กํฐ๋นํฐ์ ์ํ ๋ณ๊ฒฝ์ด ์ผ์ด๋ฌ์ ๋์ ๋ณํ๋ฅผ ์ดํดํ๋ค.
์กํฐ๋นํฐ ๊ตฌ์ฑ์ ๋ณ๊ฒฝ
์กํฐ๋นํฐ์ ๊ตฌ์ฑ์ด ๋ณํ ์ ์๋ ์ฌ๋ฌ ์ด๋ฒคํธ๊ฐ ์กด์ฌํฉ๋๋ค. ์๋ง๋ ๊ฐ์ฅ ๋ง์ด ์ผ์ด๋๋ ์๋ก๋ ์ธ๋ก ๋ชจ๋์ ๊ฐ๋ก ๋ชจ๋๊ฐ ๋ฐฉํฅ ๋ณํ์ผ ๊ฒ์ ๋๋ค. ๋ง์ฝ ๊ตฌ์ฑ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด ์กํฐ๋นํฐ๋ ์ ๊ฑฐ๋๊ณ ์์ ํ ์๋ก ์์ฑ๋ฉ๋๋ค. ์ฆ, onPause(), onStop() ๋ฐ onDestory() ์ฝ๋ฐฑ ๋ฉ์๋๊ฐ ํธ์ถ์ด ๋๋๋ฐ ์ด๋ฌํ ์ํฉ์ด ์ผ์ด๋๋ฉด ์ ์ง๋๊ณ ์๋ UI ์ํ๋ฅผ ์์ ํ ์๊ฒ ๋ฉ๋๋ค.
UI ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด์๋ ViewModel, onSaveInstanceState() ๋ฉ์๋ ๋๋ ์๊ตฌ ๋ก์ปฌ ์ ์ฅ์์ ์กฐํฉ์ ํ์ฉํด์ผ๋ง ํฉ๋๋ค. ์ด๋ ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ง๋ UI ๋ฐ์ดํฐ์ ๋ณต์ก์ฑ, ์ฑ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋๋น ๊ฒ์ ์๋๋ฅผ ๊ณ ๋ คํ์ฌ ๊ฒฐ์ ํด์ผ๋ง ํฉ๋๋ค.
๋ฉํฐ ์๋์ฐ
์ฑ์ด ๋ฉํฐ ์๋์ฐ ๋ชจ๋๋ก ์ ํ๋๋ฉด ์์คํ ์ ํ์ฌ ์คํ ์ค์ธ ์กํฐ๋นํฐ์๊ฒ ๊ตฌ์ฑ ๋ณ๊ฒฝ์ ์๋ฆฝ๋๋ค. ์ด์ ๋ฐ๋ผ ์์์ ์ธ๊ธํ ์กํฐ๋นํฐ ์๋ช ์ฃผ๊ธฐ ์ ํ์ ๊ฑฐ์น๊ฒ ๋ฉ๋๋ค.
๋ฉํฐ ์๋์ฐ ๋ชจ๋์์๋ ์ฌ์ฉ์์๊ฒ ํ์๋๋ ์ฑ์ด ๋๊ฐ ์๋๋ผ๋ ์ฌ์ฉ์๊ฐ ์ํธ์์ฉํ๊ณ ์๋ ์ฑ๋ง ํฌ๊ทธ๋ผ์ด๋์ ์์ผ๋ฉฐ ํฌ์ปค์ค๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. ์ด ์กํฐ๋นํฐ๋ '๋ค์ ์์๋จ' ์ํ๋ฅผ ๊ฐ๊ฒ ๋์ง๋ง, ๋ค๋ฅธ ์ฐฝ์ ์ฑ์ '์ผ์์ค์ง๋จ' ์ํ๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
๋ง์ฝ ์ฌ์ฉ์๊ฐ ์ฑ A์์ ์ฑ B๋ก ์ ํํ ๋ ์์คํ ์ ์ฑ A์ onPause()๋ฅผ ํธ์ถํ๊ณ ์ฑ B์ onResume()๋ฅผ ํธ์ถํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ฑ์ ์ ํํ ๋๋ง๋ค ์์ ๊ณผ์ ์ด ๋ฐ๋ณต๋ฉ๋๋ค.
ํฌ์ปค์ค์ ๋ณ๊ฒฝ
์ ์กํฐ๋นํฐ๊ฐ ํฌ๊ทธ๋ผ์ด๋๋ก ๋์ด์ ๋ฐ๋ผ ํฌ์ปค์ค๋ฅผ ์ป๊ฒ๋๊ณ ์งํ์ค์ด์๋ ์กํฐ๋นํฐ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ๊ฐ๋ฆฌ๊ฒ ๋๋ฉด ๊ฐ๋ ค์ง ์กํฐ๋นํฐ๋ ํฌ์ปค์ค๋ฅผ ์๊ณ '์ผ์์ค์ง๋จ' ์ํ๋ก ์ ํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์์คํ ์ ๊ทธ ์กํฐ๋นํฐ์ onPause()๋ฅผ ํธ์ถํ๊ฒ ๋ฉ๋๋ค.
๋ง์ฝ์ ๊ฐ๋ ค์ก๋ ์กํฐ๋นํฐ๊ฐ ํฌ๊ทธ๋ผ์ด๋์ ๋์์์ ํฌ์ปค์ค๋ฅผ ๋ค์ ์ป๊ฒ๋๋ฉด ์์คํ ์ onResume()๋ฅผ ํธ์ถํ๊ฒ๋ฉ๋๋ค. ์ ์กํฐ๋นํฐ๊ฐ ํฌ๊ทธ๋ผ์ด๋์ ๋์ด์ ๋ฐ๋ผ ์งํ์ค์ด๋ ์กํฐ๋นํฐ๋ฅผ ๋ถ๋ถ์ ์ด ์๋ ์์ ํ๊ฒ ๊ฐ๋ฆฌ๊ฒ ๋๋ฉด ๊ฐ๋ ค์ง ์กํฐ๋นํฐ๋ '์ค์ง๋จ' ์ํ๋ก ์ ํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์์คํ ์ onPause()์ onStop()์ ๋น ๋ฅด๊ฒ ์ฐ์์ ์ผ๋ก ํธ์ถํฉ๋๋ค.
'์ค์ง๋จ' ์ํ๋ก ์๋ ์กํฐ๋นํฐ์ ๋์ผํ ์ธ์คํด์ค๊ฐ ํฌ๊ทธ๋ผ์ด๋๋ก ๋ค์ ๋์์ค๋ฉด ์์คํ ์ ์กํฐ๋นํฐ์ onRestart(), onStart(), onResume()๋ฅผ ํธ์ถํฉ๋๋ค. ๋ง์ฝ, ๋์ผํ ์ธ์คํด์ค๊ฐ ์๋ ์๋ก ๋ง๋ค์ด์ง ์ธ์คํด์ค๋ผ๋ฉด onStart()์ onResume()๋ง ํธ์ถํ๊ฒ ๋ฉ๋๋ค.
์ฌ์ฉ์๊ฐ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ ํญํ ๊ฒฝ์ฐ
์กํฐ๋นํฐ๊ฐ ํฌ๊ทธ๋ผ์ด๋์ ๋์์๋ ์ํ์์ ์ฌ์ฉ์๊ฐ ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ํญํ๋ฉด ์กํฐ๋นํฐ๋ onPause(), onStop() ๋ฐ onDestory() ์ฝ๋ฐฑ ๋ฉ์๋๋ฅผ ๊ฑฐ์น๋ฉฐ ์ ํ๋ฉ๋๋ค. ๋ํ ์กํฐ๋นํฐ๋ ์ ๊ฑฐ๋ ๋ฟ๋ง ์๋๋ผ ๋ฐฑ ์คํ์์๋ ์ญ์ ๋ฉ๋๋ค.
์ด๋ฌํ ์ํฉ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก onSaveInstaceState() ์ฝ๋ฐฑ๋ฉ์๋๊ฐ ํธ์ถ๋์ง ์๋๋ค๋ ์ ์ ์ธ์งํ๊ณ ์์ด์ผ๋ง ํฉ๋๋ค. ์ด ์ํฉ์ ์ฌ์ฉ์๊ฐ ์กํฐ๋นํฐ์ ๋์ผํ ์ธ์คํด์ค๋ก ๋์์ค์ง ์์ ๊ฒ์ด๋ผ ๊ฐ์ ํฉ๋๋ค. ๋ฌผ๋ก , onBackPressed() ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ฉด ์กํฐ๋นํฐ๊ฐ ์ฌ๋ผ์ง๊ธฐ ์ ์ ์คํ๋๋ ํน์ ํ ๋์์ ๊ตฌํํ ์ ์์ต๋๋ค. onBackPressed() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ ํ ๋๋ super.onBackPressed()๋ฅผ ํธ์ถํด์ผ๋ง ํฉ๋๋ค. ๋ง์ฝ ํธ์ถํ์ง ์๋๋ค๋ฉด ์ฌ์ฉ์์๊ฒ ๊ต์ฅํ ๋ถ์์ฐ์ค๋ฌ์ด ๋์์ผ๋ก ๋ณด์ผ์๋ ์์ต๋๋ค.
์ฑ ๊ฐ์ ์ข ๋ฃ
์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ ์๋๋ฐ ์์คํ ์ด ํฌ๊ทธ๋ผ์ด๋์ ์์นํ ์ฑ์ ์ํด ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํด์ผ ํ๋ฉด ์์คํ ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฑ์ ๊ฐ์ ์ข ๋ฃ ์ํฌ์๋ ์์ต๋๋ค. ์์คํ ์ด ํน์ ์ฑ์ ์ข ๋ฃํ ๊ฐ๋ฅ์ฑ์ ๊ทธ ์์ ์ ์ฑ์ ์ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์ฑ์ ์ ์ง๋จ - ์ผ์์ ์ง๋จ - ์์ฑ,์์,์ฌ๊ฐ๋จ ์์ผ๋ก ์์คํ ์ผ๋ก๋ถํฐ ์ข ๋ฃ๋ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์์ง๋๋ค.
Reference
https://developer.android.com/guide/components/activities/state-changes?hl=ko
ํ๋ ์ํ ๋ณ๊ฒฝ ์ฒ๋ฆฌ | Android ๊ฐ๋ฐ์ | Android Developers
ํ๋์ ์ฌ์ฉ์๊ฐ ์ ํ ๊ฑธ๊ธฐ, ์ฌ์ง ์ฐ๊ธฐ, ์ด๋ฉ์ผ ๋ณด๋ด๊ธฐ ๋๋ ์ง๋ ๋ณด๊ธฐ์ ๊ฐ์ ์์ ์ ํ๊ธฐ ์ํด ์ํธ์์ฉํ ์ ์๋ ํ๋ฉด์ ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ์์์ ๋๋ค. ๊ฐ ํ๋์๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ทธ๋ฆด ์ ์๋ ์ฐฝ์ด ์ ๊ณต๋ฉ๋๋ค…
developer.android.com