- Activity Lifecycle ๋น๊ตํ๋ฉด ์์ฑ ์์๋ onViewCreated() - onViewStateRestored()๊ฐ ์ถ๊ฐ๋ก ์๊ณ , ํ๊ดด ์์๋ onSaveInstanceState() - onDestroyView()๊ฐ ์ถ๊ฐ๋์๋ค.
- Fragment Lifecycle๋ณด๋ค View Lifecycle์ด ๋ ์งง๋ค.
INITIALIZED
, CREATED
, STARTED
, RESUMED
, DESTROYED
- ํ๋๊ทธ๋จผํธ๊ฐ ์กํฐ๋นํฐ์ ๋ถ์ ๋ ํธ์ถ
- ์ธ์๋ก Context๊ฐ ์ฃผ์ด์ง
- FragmentManager ์ add ๋์ ๋ ๋๋ฌํ๋ฉฐ onCreate() ์ฝ๋ฐฑํจ์๋ฅผ ํธ์ถ
- ํ๋๊ทธ๋จผํธ๊ฐ ์กํฐ๋นํฐ์ ํธ์ถ์ ๋ฐ์ ์์ฑ
- onCreate() ์ด์ ์ onAttach()๊ฐ ๋จผ์ ํธ์ถ๋จ
- Bundle ํ์ ์ผ๋ก ์กํฐ๋นํฐ๋ก๋ถํฐ ๋ฐ์ดํฐ(savedInstanceState)๊ฐ ๋์ด์ด. ์ด๋ onSaveInstanceState()์ ์์ ์ ์ฅ๋ Bundle ๊ฐ์
- ์ฌ๊ธฐ์ ๋ ์์์ผํ ๋ถ๋ถ์ savedInstanceState ํ๋ผ๋ฏธํฐ๋ ํ๋๊ทธ๋จผํธ๊ฐ ์ฒ์ ์์ฑ ๋์ ๋๋ง null ๋ก ๋์ด์ค๋ฉฐ, onSaveInstanceState()๋ฅผ ์ฌ์ ์ํ์ง ์์๋๋ผ๋ ๊ทธ ์ดํ ์ฌ์์ฑ๋ถํฐ๋ non-null๊ฐ์ผ๋ก ๋์ด์ด
- Fragment View๊ฐ ์์ฑ๋์ง ์์๊ธฐ ๋๋ฌธ์ Fragment์ View์ ๊ด๋ จ๋ ์์ ์ ๋๊ธฐ์ ์ ์ ํ์ง ์์ -> UI ์ด๊ธฐํ ๋ถ๊ฐ๋ฅ
- ๋ ์ด์์ inflate ๋ด๋น
- onCreateView()์ ๋ฐํ๊ฐ์ผ๋ก ์ ์์ ์ธ Fragment View๊ฐ์ฒด๋ฅผ ์ ๊ณตํ์ ๋๋ง Fragment View์ Lifecycle์ด ์์ฑ๋จ
- savedInstanceState๋ก ์ด์ ์ํ์ ๋ํ ๋ฐ์ดํฐ ์ ๊ณต
- View์ ๊ด๋ จ๋ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํ ํ ์ ์์
- onCreateView()๋ฅผ ํตํด ๋ฐํ๋ View ๊ฐ์ฒด๋ onViewCreated()์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋จ
- ์ด ์์ ๋ถํฐ๋ Fragment View์ Lifecycle์ด INITIALIZED ์ํ๋ก ์ ๋ฐ์ดํธ ๋์
- ๋๋ฌธ์ View์ ์ด๊ธฐ๊ฐ ์ค์ , LiveData ์ต์ ๋น, RecyclerView, ViewPager2์ ์ฌ์ฉ๋ Adapter ์ธํ ์ ์
- ํจ์๋ ์ ์ฅํด๋ ๋ชจ๋ state ๊ฐ์ด Fragment์ View ๊ณ์ธต๊ตฌ์กฐ์ ๋ณต์ ๋์ ๋ ํธ์ถ๋จ
- ๋ฐ๋ผ์ ์ฌ๊ธฐ์๋ถํฐ๋ ์ฒดํฌ๋ฐ์ค ์์ ฏ์ด ํ์ฌ ์ฒดํฌ ๋์ด์๋์ง ๋ฑ ๊ฐ ๋ทฐ์ ์ํ๊ฐ์ ์ฒดํฌํ ์ ์์
- Fragment๊ฐ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง ์ ์์ ๋ ํธ์ถ๋จ
- ์ฃผ๋ก Fragment๊ฐ attach ๋์ด์๋ Activity์ onStart() ์์ ๊ณผ ์ ์ฌ
- ์ด ์์ ๋ถํฐ๋ Fragment์ child FragmentManager ํตํด FragmentTransaction์ ์์ ํ๊ฒ ์ํ ๊ฐ๋ฅ
- Fragment์ Lifecycle์ด STARTED๋ก ์ด๋ํ ํ์ Fragment View์ Lifecycle ๋ํ STARTED๋ก ๋ณํ
- ์ฌ์ฉ์์ ํ๋๊ทธ๋จผํธ๊ฐ ์ํธ์์ฉ ํ ์ ์๋ ์ํ์ผ ๋ ํธ์ถ. ๋ค์ ๋งํด onResume()์ด ํธ์ถ๋์ง ์์ ์์ ์์๋ ์ ๋ ฅ์ ์๋ํ๊ฑฐ๋ ํฌ์ปค์ค๋ฅผ ์ค์ ํ๋ ๋ฑ์ ์์ ์ ์์๋ก ํ๋ฉด ์๋๋ค๋ ๊ฒ์ ์๋ฏธ
- Fragment๊ฐ ๋ณด์ด๋ ์ํ์์ ๋ชจ๋ Animator์ Transition ํจ๊ณผ๊ฐ ์ข ๋ฃ๋๊ณ , ํ๋๊ทธ๋จผํธ์ ์ฌ์ฉ์๊ฐ ์ํธ์์ฉ ํ ์ ์์ ๋ onResume() ํธ์ถ๋จ
- onStart()์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฃผ๋ก Activity์ onResume()์์ ๊ณผ ์ ์ฌ
- ์ฌ์ฉ์๊ฐ Fragment ๋ฅผ ๋ ๋๊ธฐ ์์ํ์ง๋ง Fragment๊ฐ visible ์ผ ๋ onPause()๊ฐ ํธ์ถ
- ์ด ๋ Faragment์ View์ Lifecycle์ด PAUSED๊ฐ ์๋ STARTED๊ฐ ๋จ // Lifecycle์ PAUSE์ STOP์ ํด๋นํ๋ ์ํ๊ฐ ์์
- Fragment๊ฐ ๋ ์ด์ ํ๋ฉด์ ๋ณด์ฌ์ง์ง ์๊ฒ ๋๋ฉด onStop() ์ฝ๋ฐฑ ํธ์ถ
- ๋ถ๋ชจ ์กํฐ๋นํฐ, ํ๋๊ทธ๋จผํธ๊ฐ ์ค๋จ๋ ๋, ์ํ๊ฐ ์ ์ฅ๋ ๋ ํธ์ถ
- View์ Lifecycle: STARTED โ CREATED
- API 28๋ฒ์ ์ ๊ธฐ์ ์ผ๋ก onSaveInstanceState() ํจ์์ onStop() ํจ์ ํธ์ถ ์์๊ฐ ๋ฌ๋ผ์ง, ๋ฐ๋ผ์ onStop()์ด FragmentTransaction์ ์์ ํ๊ฒ ์ํํ๋ ๋ง์ง๋ง ์ง์ ์ด ๋จ
- ๋ชจ๋ exit animation, transaction์ด ์๋ฃ๋๊ณ Fragment๊ฐ ํ๋ฉด์ผ๋ก๋ถํฐ ๋ฒ์ด๋ฌ์ ๊ฒฝ์ฐ ํธ์ถ
- view์ lifecycle: CREATED โ DESTROYED
- getViewLifecycleOwnerLiveData()์ ๋ฆฌํด๊ฐ์ผ๋ก null ์ด ๋ฐํ
- ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ํด ์๊ฑฐ๋ ์ ์๋๋ก Fragment View์ ๋ํ ๋ชจ๋ ์ฐธ์กฐ๊ฐ ์ ๊ฑฐ๋์ด์ผ ํจ
- Fragment๊ฐ ์ ๊ฑฐ๋๊ฑฐ๋, FragmentManager๊ฐ destroy ๋์ ๊ฒฝ์ฐ, ํ๋๊ทธ๋จผํธ์ Lifecycle ์ DESTROYED ์ํ๊ฐ ๋๊ณ , onDestroy() ํธ์ถ
- Fragment Lifecycle์ ๋์ ์๋ฆผ
- onAttach() ๊ฐ onCreate()์ด์ ์ ํธ์ถ ๋๋ ๊ฒ์ฒ๋ผ onDetach()๋ํ onDestroy()์ดํ ํธ์ถ๋จ
- ํ๋๊ทธ๋จผํธ๊ฐ ์กํฐ๋นํฐ๋ก๋ถํฐ ํด์ ๋์ด์ง ๋ ํธ์ถ๋จ
week1
Activity ํด๋์ค๋ Activity ์ํ๊ฐ ๋ณ๊ฒฝ๋์์์ ์ ์ ์๋ ์ฌ๋ฌ ์ฝ๋ฐฑ์ ์ ๊ณตํ๋ค. Activity ํด๋์ค๋ ์๋ช ์ฃผ๊ธฐ์ ๋จ๊ณ ๊ฐ ์ ํ์ ํ์ํ๊ธฐ ์ํด 6๊ฐ์ง ์ฝ๋ฐฑ onCreate(), onStart(), onResume(), onPause(), onStop()๋ฐ onDestroy()๋ฅผ ์ ๊ณตํ๋ค. ์์คํ ์ Activity์ด ์๋ก์ด ์ํ์ ๋ค์ด๊ฐ ๋ ๊ฐ ์ฝ๋ฐฑ์ ํธ์ถํ๋ค.
-
์์คํ ์ด ์ฒ์ Activity๋ฅผ ์์ฑํ ๋ ์คํ๋๋ ์ฝ๋ฐฑ์ด๋ค.
-
Activity ์์ฑ ์ Activity๋ Created ์ํ๊ฐ ๋๋ค.
-
onCreate()์์๋ Activity์ ์ ์ฒด ์๋ช ์ฃผ๊ธฐ ๋์ ํ ๋ฒ๋ง ๋ฐ์ํด์ผ ํ๋ ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ์ํํ๋ค. ์์๋ ์๋์ ๊ฐ๋ค.
- Databinding ์ํ
- Activity๋ฅผ ViewModel๊ณผ ์ฐ๊ฒฐ
- ์ผ๋ถ ํด๋์ค ๋ฒ์ ๋ณ์๋ฅผ ์ธ์คํด์คํ
-
์ด ๋ฉ์๋๋ Activity์ ์ด์ ์ํ๋ฅผ ํฌํจํ๋ Bundle ๊ฐ์ฒด์ธ ๋งค๊ฐ ๋ณ์ InstanceState๋ฅผ ์์ ํ๋ค. ์ด์ ์ Activity๊ฐ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ Bundle ๊ฐ์ฒด ๊ฐ์ null์ด๋ค.
-
onCreate() ๋ฉ์๋๊ฐ ์คํ์ ๋ง์น๋ฉด ์์ ์ด Started ์ํ๋ก ์ ํ๋๊ณ , ์์คํ ์ onStart() ๋ฉ์๋์ onResume() ๋ฉ์๋๋ฅผ ๋น ๋ฅธ ์ฐ์์ผ๋ก ํธ์ถํ๋ค.
lateinit var textView: TextView
var gameState: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ์ด์ ์ํ๊ฐ ๋ณต์
gameState = savedInstanceState?.getString(GAME_STATE_KEY)
// ํ๋ฉด Layout ์ ์ ๋ฐ ๋ทฐ ์์ฑ
setContentView(R.layout.main_activity)
// ํ
์คํธ ๋ทฐ ์ด๊ธฐํ
textView = findViewById(R.id.text_view)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
textView.text = savedInstanceState?.getString(TEXT_VIEW_KEY)
}
override fun onSaveInstanceState(outState: Bundle?) {
outState?.run {
putString(GAME_STATE_KEY, gameState)
putString(TEXT_VIEW_KEY, textView.text.toString())
}
super.onSaveInstanceState(outState)
}
-
Activity๊ฐ Started ์ํ๊ฐ ๋๋ฉด ์์คํ ์ด ์ด onStart()๋ฅผ ํธ์ถํ๋ค.
-
์ฑ ์ด ํฌ๊ทธ๋ผ์ด๋๋ก ์ง์ ํ์ฌ ์ํธ์์ฉ์ด ๋๋๋ก ์ค๋นํ์ฌ Activity๊ฐ ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋๋ก ํ๋ค.
-
์ด ๋ฉ์๋๋ ์ฑ์ด UI๋ฅผ ์ ์งํ๋ ์ฝ๋๋ฅผ ์ด๊ธฐํํ๋ ๊ณณ์ด๋ค.
-
onStart()๋ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์๋ฃ๋๋ฉฐ Created ์ํ์ ๋ง์ฐฌ๊ฐ์ง๋ก Activity๊ฐ Started ์ํ๋ก ์ ์ง๋์ง ์๋๋ค.
-
์ด ์ฝ๋ฐฑ์ด ์๋ฃ๋๋ฉด Activity๊ฐ Resumed ์ํ๊ฐ ๋๊ณ ์์คํ ์ onResume()๋ฅผ ํธ์ถํ๋ค.
-
Activity๊ฐ Resumed ์ํ๋ก ์ ํ๋๋ฉด ํฌ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ ๋ค์ ์์คํ ์ด onResume() ์ฝ๋ฐฑ์ ํธ์ถํ๋ค.
-
์ฑ์ด ์ฌ์ฉ์์ ์ํธ ์์ฉํ๋ ์ํ์ด๋ค.
-
์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ฌ ์ฑ์์ ํฌ์ปค์ค๊ฐ ๋ ๋ ๋๊น์ง๋ ์ฑ์ด ์ด ์ํ์์ ๋จธ๋ฌด๋ฅด๊ฒ ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ ํ๋ฅผ ๋ฐ๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ Activity๋ฅผ ํ์ํ๊ฑฐ๋ ๋๋ฐ์ด์ค ํ๋ฉด์ด ๊บผ์ ธ ์๋ ๊ฒฝ์ฐ์ด๋ค.
-
์ค๋จ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์์ ์ด Paused ์ํ๋ก ์ ํ๋๊ณ ์์คํ ์ด onPause() ์ฝ๋ฐฑ์ ํธ์ถํ๋ค.
-
Paused ์ํ์์ Resumed ์ํ๋ก ๋์๊ฐ๋ฉด ์์คํ ์ด ๋ค์ ํ๋ฒ onResume()์ ํธ์ถํ๋ค.
-
onResume()์์ ๋ฆฌ์์ค๋ฅผ ์ด๊ธฐํํ๋๋ก ๊ตฌํํ์ผ๋ฉด onPause() ์ค์ ๋ฆฌ์์ค๋ฅผ ํด์ ํ๋ค.
ON_START
<->ON_STOP
: ON_START ์ด๋ฒคํธ ์ดํ์ ์ด๊ธฐํ๋ฅผ ํ๋ค๋ฉด ON_STOP ์ด๋ฒคํธ ์ดํ์ ํด์ ํ๊ฑฐ๋ ์ข ๋ฃํ๋ค.ON_RESUME
<->ON_PAUSE
: ON_RESUME ์ด๋ฒคํธ ์ดํ์ ์ด๊ธฐํํ๋ ๊ฒฝ์ฐ ON_PAUSE ์ด๋ฒคํธ ์ดํ์ ํด์ ํ๋ค.
// ์๋ช
์ฃผ๊ธฐ๋ฅผ ์๊ณ ์๋ ์ปดํฌ๋ํธ๊ฐ ON_RESUME ์ด๋ฒคํธ๋ฅผ ์์ ํ ๋ ์นด๋ฉ๋ผ์ ์ก์ธ์คํ๋ ์์
class CameraComponent : LifecycleObserver {
...
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun initializeCamera() {
if (camera == null) {
getCamera()
}
}
...
}
-
Activity๊ฐ ๋ ์ด์ ํฌ๊ทธ๋ผ์ด๋์ ์์ง ์์์ ๋ํ๋ธ๋ค.(ํ์ ์ด ๋์ด์ง๊ฑฐ๋ ํฌ์ปค์ค๋ฅผ ์์ด๋ฒ๋ฆฌ๊ฒ ๋ ๊ฒฝ์ฐ. ๋จ, ๋ฉํฐ ์๋์ฐ ๋ชจ๋์ ์๋ ๊ฒฝ์ฐ ๊ณ์ ํ์๋ ๋ ์ ์์).
-
Activity๊ฐ Paused ์ํ๋ก ์ ํ๋๋ ๋ฐ๋ ๋ช ๊ฐ์ง ์ด์ ๊ฐ ์๋ค.
- ๊ฐ์ฅ ํํ ์ผ์ด์ค๋ ์ผ๋ถ ์ด๋ฒคํธ๋ก ์ฑ ์คํ์ด ์ค๋จ๋๋ ๊ฒ์ด๋ค.
- Android 7.0(API ๋ ๋ฒจ 24) ์ด์์์๋ ์ฌ๋ฌ ์ฑ์ด ๋ฉํฐ ์๋์ฐ ๋ชจ๋๋ก ์คํ๋ฉ๋๋ค. ํญ์ ํ๋์ ์ฑ(์๋์ฐ)์๋ง ํฌ์ปค์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์คํ ์ ๋ค๋ฅธ ๋ชจ๋ ์ฑ์ ์ผ์ ์ค์งํ๋ค.
- ๋ค์ด์ผ๋ก๊ทธ ๊ฐ์ ์๋ก์ด ๋ฐํฌ๋ช Activity๊ฐ ์ด๋ฆด ๋์ด๋ค. Activity๊ฐ ์ฌ์ ํ ๋ถ๋ถ์ ์ผ๋ก ๋ณด์ด์ง๋ง ์ด์ ์ด ๋ง์ง ์๋ ํ Paused ์ํ๋ก ๋จ์ ์๋ค.
-
onPause()์์ ์์คํ ๋ฆฌ์์ค, ์ผ์(์: GPS)์ ๋ํ ํธ๋ค ๋๋ ์์ ์ด ์ผ์ ์ค์ง๋๊ณ ์ฌ์ฉ์์๊ฒ ํ์ํ์ง ์์ ๋์ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ์ํฅ์ ์ค ์ ์๋ ๋ฆฌ์์ค๋ฅผ ํด์ ํ ์ ์๋ค.
-
๋ฉํฐ ์๋์ฐ ๋ชจ๋์ธ ๊ฒฝ์ฐ Paused ์ํ์ธ Activity๊ฐ ์ฌ์ ํ ๋ํ๋ ์ ์๋ค. ๋ฐ๋ผ์ UI ๊ด๋ จ ๋ฆฌ์์ค๋ฅผ ์์ ํ ํด์ ํ๊ฑฐ๋ ์กฐ์ ํ๋ ๊ฒ์ ๋ฉํฐ ์๋์ฐ ๋ชจ๋๋ฅผ ๋ ์ ์ง์ํ๋ ค๋ฉด onPause() ๋์ onStop()๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด์ผํ๋ค.
-
onPause()์คํ์ ๋งค์ฐ ์งง์ผ๋ฉฐ ์ ์ฅ ์์ ์ ์ํํ๊ธฐ์ ์ถฉ๋ถํ ์๊ฐ์ด ํ์ํ์ง ์๋ค. ๋ฐ๋ผ์ ์์ฉ ํ๋ก๊ทธ๋จ ๋๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ ํธ์ถ์ ํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ์ ์คํํ ๋ onPause()๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋๋ค. OnStop()์ค์ ๊ณผ๋ถํ ์ข ๋ฃ ์์ ์ ์ํํด์ผ ํ๋ค.
-
onPause() ๋ฉ์๋๊ฐ ์๋ฃ๋์๋ค๊ณ ์์ ์ด ์ผ์ ์ค์ง๋ ์ํ๊ฐ ๋๋ ๊ฒ์ ์๋๋ค. ๋์ Activity๊ฐ ๋ค์ ์์๋๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ์์ ํ ๋ณผ ์ ์๊ฒ ๋ ๋๊น์ง Activity๋ ์ด ์ํ๋ก ์ ์ง๋๋ค.
// ON_RESUME ์ด๋ฒคํธ๊ฐ ์์ ๋ ํ ์ด๊ธฐํ๋ ์นด๋ฉ๋ผ๋ฅผ ํด์ ํ๋ค.
class CameraComponent : LifecycleObserver {
...
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun releaseCamera() {
camera?.release()
camera = null
}
...
}
-
Activity๊ฐ ์ฌ์ฉ์์๊ฒ ์์ ํ ๋ณด์ด์ง ์๊ฒ ๋๋ฉด Stopped ์ํ์ ๋ค์ด๊ฐ๊ณ , ์์คํ ์ onStop() ์ฝ๋ฐฑ์ ํธ์ถํ๋ค.
-
์๋ฅผ ๋ค์ด ์๋ก ์์๋ Activity๊ฐ ํ๋ฉด ์ ์ฒด๋ฅผ ์ฐจ์งํ ๊ฒฝ์ฐ์ ์ ์ฉ๋๋ค.
-
์์คํ ์ Activity์ ์คํ์ด ์๋ฃ๋์ด ์ข ๋ฃ๋ ์์ ์ onStop()์ ํธ์ถํ ์๋ ์๋ค.
-
onStop()์์๋ ์ฑ์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์๋ ๋์ ์ฑ์ ํ์ํ์ง ์์ ๋ฆฌ์์ค๋ฅผ ํด์ ํ๊ฑฐ๋ ์กฐ์ ํด์ผํ๋ค.
-
์๋ฅผ ๋ค์ด ์ฑ์ ์ ๋๋ฉ์ด์ ์ ์ผ์์ค์งํ๊ฑฐ๋, ์ธ๋ฐํ ์์น ์ ๋ฐ์ดํธ์์ ๋๋ต์ ์ธ ์์น ์ ๋ฐ์ดํธ๋ก ์ ํํ ์ ์๋ค.
-
onPause() ๋์ onStop()์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ๋ฉํฐ ์๋์ฐ ๋ชจ๋์์ ํ๋์ ๋ณด๊ณ ์๋๋ผ๋ UI ๊ด๋ จ ์์ ์ด ๊ณ์ ์งํ๋๋ค.
-
๋ํ onStop()์ ์ฌ์ฉํ์ฌ CPU๋ฅผ ๋น๊ต์ ๋ง์ด ์๋ชจํ๋ ์ข ๋ฃ ์์ ์ ์คํํด์ผํ๋ค.
-
์๋ฅผ ๋ค์ด ์ ๋ณด๋ฅผ DB์ ์ ์ฅํ ์ ์ ํ ์๊ธฐ๋ฅผ ์ฐพ์ง ๋ชปํ๋ค๋ฉด onStop() ์ํ์ผ ๋ ์ ์ฅํ ์ ์๋ค.
-
Activitiy๊ฐ Stopped ์ํ์ ๋ค์ด๊ฐ๋ฉด Activity ๊ฐ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ ์์ ๋จธ๋ฌด๋ฅด๊ฒ ๋๋ค. ์ด ๊ฐ์ฒด๊ฐ ๋ชจ๋ ์ํ ๋ฐ ๋ฉค๋ฒ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ์ง๋ง window ๋งค๋์ ์ ์ฐ๊ฒฐ๋์ด ์์ง๋ ์๋ค.
-
Activity๊ฐ ๋ค์ ์์๋๋ฉด ์ด ์ ๋ณด๋ฅผ ๋ค์ ํธ์ถํ๋ค. ์ต์์ ์ํ๊ฐ Resumed ์ํ์ธ ์ฝ๋ฐฑ ๋ฉ์๋ ์ค์ ์์ฑ๋ ๊ตฌ์ฑ์์๋ ๋ค์ ์ด๊ธฐํํ ํ์๊ฐ ์๋ค.
-
๋ํ ์์คํ ์ ๋ ์ด์์์ ์๋ ๊ฐ View ๊ฐ์ฒด์ ํ์ฌ ์ํ๋ ๊ธฐ๋กํ๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ EditText ์์ ฏ์ ํ ์คํธ๋ฅผ ์ ๋ ฅํ๋ฉด ํด๋น ๋ด์ฉ์ด ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ ์ฅ ๋ฐ ๋ณต์ํ ํ์๊ฐ ์๋ค.
-
Activity๋ Stopped ์ํ์์ ๋ค์ ์์๋์ด ์ฌ์ฉ์์ ์ํธ์์ฉํ๊ฑฐ๋, ์คํ์ ์ข ๋ฃํ๊ณ ์ฌ๋ผ์ง๋ค.
-
ํ๋์ด ๋ค์ ์์๋๋ฉด ์์คํ ์ onRestart()๋ฅผ ํธ์ถํ๋ค.
// ์ด์ ๋ด์ฉ์ ๋ก์ปฌ DB์ ์ ์ฅํ๋ onStop()์ ๊ตฌํํ ์์
override fun onStop() {
super.onStop()
val values = ContentValues().apply {
put(NotePad.Notes.COLUMN_NAME_NOTE, getCurrentNoteText())
put(NotePad.Notes.COLUMN_NAME_TITLE, getCurrentNoteTitle())
}
asyncQueryHandler.startUpdate(
token,
null,
uri,
values,
null,
null
)
}
-
Activity๊ฐ ์คํ์ ์ข ๋ฃํ๋ฉด ์์คํ ์ onDestroy()๋ฅผ ํธ์ถํ๋ค.
-
์์คํ ์ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์ด ์ฝ๋ฐฑ์ ํธ์ถํ๋ค.
- Activitiy ์ข ๋ฃ
- configuration change(์: ์ฅ์น ํ์ ๋๋ ๋ฉํฐ ์๋์ฐ ๋ชจ๋)์ผ๋ก ์ธํด ์์คํ ์ด ์ผ์์ ์ผ๋ก Activitiy๋ฅผ ์ค๋จ
-
Activity๊ฐ configuration chnage์ผ๋ก ์ธํด ๋ค์ ์์ฑ๋ ๊ฒฝ์ฐ ViewModel์ ๊ทธ๋๋ก ๋ณด์กด๋์ด ๋ค์ Activity ์ธ์คํด์ค์ ์ ๋ฌ๋๋ฏ๋ก ์ถ๊ฐ ์์ ์ด ํ์ํ์ง ์๋ค. Activity๊ฐ ๋ค์ ์์ฑ๋์ง ์์ ๊ฒฝ์ฐ ViewModel์ onCleared()๋ฅผ ํธ์ถํ์ฌ Activity๊ฐ ์๋ฉธ๋๊ธฐ ์ ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํด์ผ ํ๋ค.
-
onDestroy()๋ Activity๊ฐ ์์ ํ๋ ๋ง์ง๋ง ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ์ด ๋๋ค.
-
onDestroy() ์ฝ๋ฐฑ์ ์ด์ ์ ์ฝ๋ฐฑ(์: onStop())์์ ์์ง ํด์ ๋์ง ์์ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ํด์ ํด์ผ ํ๋ค.
Method | Activity State | Description |
---|---|---|
onCreate() | ๋ง๋ค์ด์ง | Activity ์์ฑํ ๋ |
onStart() | ํ๋ฉด์ ๋ํ๋จ | ํ๋ฉด์ ๋ณด์ฌ์ง๊ธฐ ์์ํ ๋ |
onResume() | ํ์ฌ ์คํ ์ค ํ๋ฉด์ ๋ํ๋จ | ํ๋ฉด์ ๋ํ๋ ์๊ณ ์คํ์ค์ผ ๋ |
onPause() | ํ๋ฉด์ด ๊ฐ๋ ค์ง | Activityํ๋ฉด์ ์ผ๋ถ๊ฐ ๋ค๋ฅธ Activity์ ๊ฐ๋ ค์ง |
onStop() | ํ๋ฉด์ด ์์ด์ง | ๋ค๋ฅธ Activity์ ์คํ์ผ๋ก ์์ ํ ๊ฐ๋ ค์ง |
onDestroy() | ์ข ๋ฃ๋จ | Activity ์ข ๋ฃ๋จ |
Activity ์๋ช ์ฃผ๊ธฐ ํ ์ถ์ฒ Activity Lifecycle ๊ณต์๋ฌธ์
Rules
- master
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ๋ธ๋์น์ ๋๋ค. ์๋ก์ด ์ฐ์ต ํ๊ฒฝ์ ๋ง๋ค๊ณ ์ ํ ๋ ์ด ๋ธ๋์น์์ ์๋ก์ด ๋ธ๋์น๋ฅผ ํ์ ์ ๋ง๋์๋ฉด ๋ฉ๋๋ค.
- develop/view
- ์ฌ๋ฌ๋ถ์ ๋๋ถ๋ถ์ ๊ณผ์ ๋ ์ด ๋ธ๋์น์์ ์ด๋ค์ง๊ฒ ๋ ๊ฒ์ ๋๋ค.
- develop/view ๋ธ๋์น์์ ์๋ก์ด feature ๋ธ๋์น๋ฅผ ํ๊ณ ์์ ์ ์งํํ๋ฉด์
- ๊ณผ์ ๋ฅผ ์๋ฃํ๋ฉด ํด๋น ๊ณผ์ ๋ฅผ develop/view์ PR์ ์ฌ๋ ค์ฃผ์๊ณ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ผ์๋ฉด ๋ฉ๋๋ค.
- ๋จธ์ง๊น์ง ์๋ฃํ์๋ฉด ๊ณผ์ ์๋ฃ๋ก ์ธ์ ํ๊ฒ ์ต๋๋ค.
- develop/compose
- ์ด๋ฒ ๊ธฐ์ ์ฌํ๊ณผ์ ์ธ Compose ๊ณผ์ ๋ฅผ ์งํํ๋ ๋ธ๋์น์ ๋๋ค.
- develop/compose ๋ธ๋์น์์ ์ฌํ๊ณผ์ ์ ํด๋นํ๋ ๋ด์ฉ์ ์์ ๋ค์ ์งํํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
- ๊ธฐ์กด view ๋ธ๋์น๋ค๊ณผ๋ ์ฐ๊ด๊ด๊ณ๊ฐ ์์ด์ผ ํฉ๋๋ค.
- ๊ณผ์ ๋ฅผ ์๋ฃํ๋ฉด ํด๋น ๊ณผ์ ๋ฅผ develop/compose์ PR์ ์ฌ๋ ค์ฃผ์๊ณ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ผ์๋ฉด ๋ฉ๋๋ค.
- Compose ๊ฐ๋ฐํ๊ฒฝ์
- Kotlin: 1.7.0
- Compose: 1.2.1
- ์ผ๋ก ๋ง์ถฐ๋๊ฒ ์ต๋๋ค.