์๋๋ก์ด๋๋ก ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด activity, fragment์ ์ํ์ ๋ฐ๋ฅธ ๋ก์ง์ ์ํํด์ผ ํ ๋๊ฐ ์๋ค.
๊ทธ๋ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด life cycle ํจ์๋ค์ธ๋ฐ ์ด๋ฒ ํฌ์คํ ์์๋ ๊ทธ๊ฒ๋ค์ ์์๋ณด๋๋ก ํ์.
life cycle์ด๋?
activity, fragment๊ฐ ํ์ด๋์(์์๋๋ค) ์ฃฝ๋(์ข ๋ฃ๋๋ค) ์๊ฐ๊น์ง์ ์ฃผ๊ธฐ๋ฅผ ๋ปํ๋ค.
1. Activity์ ์๋ช ์ฃผ๊ธฐ(lifeCycle)
๋จผ์ activity์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ํ ์๋ณผ ๊ฑด๋ฐ, activity์ ์๋ช ์ฃผ๊ธฐ๋ก๋
- onCreate()
- onStart()
- onResume()
- onPause()
- onStop()
- onDestroy()
- onRestart()
์ด 7๊ฐ์ง๊ฐ ์์ผ๋ฉฐ, ๊ฐ ํจ์๋ค์ activity์ ์ํ์ ๋ฐ๋ผ ํธ์ถ์ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ํจ์๋ฅผ ๊ผญ ๋ค ๊ตฌํํ ํ์๋ ์๋ค onCreate()๋ ์์ธ์ง๋ง, ์์ ์ด ๊ฐ๋ฐ ์ค์ธ ์ฑ์ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ์ฌ์ฉํ ์ค ์์์ผ ํ๋ค.
1. onCreate()
onCreate๋ ์ฑ์์ activity๊ฐ ์คํ ๋ ๋ ์คํ๋๋ ํจ์๋ก, ๋ณ์ ์ ์, xml์ ์ ์(ํ๋ฉด ๊ตฌ์ฑ)๋ฅผ ๋ด๋นํ๋ค.
private lateinit var binding: ActivityMainBinding
private lateinit var textView: TextView
// onCreate(): activity๋ฅผ ์์ฑํ ๋ ์ํ๋๋ค(ํ์๋ก ์์ด์ผ ํจ).
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
textView = binding.statusText
textView.text = "activity created."
}
setContentView ํจ์๋ ๋ค๋ฅธ lifeCycle ํจ์ ์์์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๋ฌด์กฐ๊ฑด onCreate() ์์์ ์ฌ์ฉํด์ผ ํ๋ค.
onCreate() ํจ์ ํธ์ถ ํ activity๋ "์์" ์ํ๊ฐ ๋๋๋ฐ, ์ด๋ onStart()์ onResume()๋ฅผ ํธ์ถํ๋ค.
2. onStart()
onStart() ํจ์๋ activity๊ฐ "์์" ์ํ์ผ ๋ ํธ์ถ๋๋ค.
์ด๋ "์์" ์ํ๋ activity๊ฐ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ์์ ์ ๋ปํ๋ค.
override fun onStart() {
super.onStart()
Log.d("TAG", "onStart: activity started.")
}
onStart()๊ฐ ์ํ๋๊ณ ๋ ํ, activity๋ "Resume" ์ํ๋ก ์ง์ ํ๋ฉด์ onResume()๊ฐ ์ํ๋๋ค
3. onResume()
onResume() ํจ์๋ activity๊ฐ "Resume" ์ํ์ผ ๋ ํธ์ถ๋๋ค.
"Resume" ์ํ๋ ์ฌ์ฉ์๊ฐ ์ฑ๊ณผ ์ํธ์์ฉ ํ ์ ์๋ ์ํ๋ฅผ ๋ปํ๋ค.
override fun onResume() {
super.onResume()
Log.d("TAG", "onStart: activity resumed.")
}
onCreate() ์์ onResume()๊น์ง์ ์ฑ์ ๋ชจ์ต
ํ์ง๋ง ์กํฐ๋นํฐ๊ฐ ํญ์ "Resume" ์ํ๋ก๋ง ์๋ ๊ฒ์ด ์๋๋ค.
intent๋ฅผ ํตํด ๋ค๋ฅธ ์กํฐ๋นํฐ๋ก ๋์ด๊ฐ๋ ๊ฒฝ์ฐ์๋ ์กํฐ๋นํฐ๊ฐ "Paused" ์ํ์ ๋ค์ด๊ฐ onPause()๋ฅผ ํธ์ถํ๋ค.
4. onPause()
onPause๋ activity๊ฐ "Paused" ์ํ์ผ ๋ ํธ์ถ๋๋ค.
"Paused" ์ํ๋ acivity๊ฐ ์ผ์ ์ ์ง ์ํ๋ผ๋ ๊ฒ์ผ๋ก ์ดํดํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
override fun onPause() {
super.onPause()
Log.d("TAG", "onPause activity pause")
}
๋ค์ activity๋ฅผ ์์ํ๋ฉด, "Paused" ์ํ๊ฐ ํ๋ฆฌ๊ณ ๋ค์ onResume()๊ฐ ํธ์ถ๋๋ค.
5. onStop
activity๊ฐ ํ๋ฉด์์ ์์ ํ ์๋ณด์ด๊ฒ๋์์ ๋ ํธ์ถ๋๋ค.
override fun onStop() {
super.onStop()
Log.d("TAG", "onPause activity stopped")
}
์ฌ์ฉ์๊ฐ ๋ค์ ๋์์ค๊ฒ ๋๋ฉด, "Stopped" ์ํ์์ ๋ค์ ์์ํด์ onRestart(), onStart(), onResume() ์์๋๋ก ๋ค์ ํธ์ถ๋๋ค.
6. onDestroy
activity๊ฐ ์์ ํ ์ฃฝ๊ธฐ(?) ์ ์ ์ํ๋๋ ๋ฉ์๋์ด๋ค.
override fun onDestroy() {
super.onDestroy()
Log.d("TAG", "onPause activity died.")
}
onPause()๋ถํฐ onDestroy()๊น์ง์ ๋ชจ์ต
์ ๋ฆฌ
์ด๋ฒ์ lifeCycle์ ๊ณต๋ถํ๋ฉด์ ๊ฐ ํจ์๋ค์ ์ญํ ์ ๋ ์ ํํ ์๊ฒ ๋์๋ค.
๊ธฐ์กด์๋ ๊ฒ์์ ๊ธ๊ธํ๋ฉด์ ์ฑ์ ๋ง๋ค์์ผ๋, ์ด์ ๋ ์ ๊ทธ๋๋ ๋ ๊ฒ ๊ฐ๋ค~!
'๐ฑ| Android > ๐ | Jetpack' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android, Kotlin] Compose UI ์ ๋ฆฌ(7) (2) | 2023.04.16 |
---|---|
[Android, Kotlin] Compose UI ์ ๋ฆฌ(6) (0) | 2023.04.07 |
[Android, Kotlin] Compose UI ์ ๋ฆฌ(5) (0) | 2023.03.13 |
[Android, Kotlin] Compose UI ์ ๋ฆฌ(4) (0) | 2022.12.05 |
[Android, Kotlin] Compose UI ์ ๋ฆฌ(3) (0) | 2022.12.04 |