[TIL] #14 Activity Lifecycle

YeonΒ·2023λ…„ 8μ›” 2일
0

내일배움캠프 - Kotlin

λͺ©λ‘ 보기
18/58
post-thumbnail

πŸŒ€ Activity Lifecycle

1. Mean

  • Activity의 생성뢀터 μ†Œλ©ΈκΉŒμ§€μ˜ κ³Όμ •

2. Why you need to know the life cycle?

μ•‘ν‹°λΉ„ν‹°μ˜ 생λͺ… μ£ΌκΈ°λ₯Ό μ΄ν•΄ν•˜λ©΄ μ•ˆλ“œλ‘œμ΄λ“œ 앱을 더 효과적으둜 κ°œλ°œν•˜κ³  μ‚¬μš©μžμ—κ²Œ 높은 μˆ˜μ€€μ˜ μ‚¬μš©μž κ²½ν—˜μ„ μ œκ³΅ν•  수 있음

1) μ‚¬μš©μž κ²½ν—˜ κ°œμ„ 

  • μ‚¬μš©μžκ°€ 앱을 μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€ 이해할 수 있음
  • ex. μ•‘ν‹°λΉ„ν‹°κ°€ ν¬κ·ΈλΌμš΄λ“œμ— μžˆμ„ λ•Œ μ‚¬μš©μžμ—κ²Œ λ³΄μ—¬μ§€λŠ” λ‚΄μš©μ„ μ—…λ°μ΄νŠΈν•˜κ±°λ‚˜, μ•‘ν‹°λΉ„ν‹°κ°€ λ°±κ·ΈλΌμš΄λ“œλ‘œ 이동할 λ•Œ μ€‘μš”ν•œ 데이터λ₯Ό μ €μž₯ν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ ν•  수 있음
  • 이둜 인해 μ‚¬μš©μž κ²½ν—˜μ΄ ν–₯μƒλ˜κ³  μ•±μ˜ λ°˜μ‘μ„±μ΄ ν–₯상됨

2) λ¦¬μ†ŒμŠ€ 관리

  • λ©”λͺ¨λ¦¬ 관리와 같은 λ¦¬μ†ŒμŠ€ 관리λ₯Ό λ”μš± 효율적으둜 ν•  수 있음
  • μ•‘ν‹°λΉ„ν‹°κ°€ λ°±κ·ΈλΌμš΄λ“œλ‘œ 이동할 λ•Œ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ¦¬μ†ŒμŠ€λ₯Ό ν•΄μ œν•˜κ³ , ν¬κ·ΈλΌμš΄λ“œλ‘œ λ“€μ–΄μ˜¬ λ•Œ λ‹€μ‹œ μ΄ˆκΈ°ν™”ν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ—¬ μ•±μ˜ μ„±λŠ₯을 μ΅œμ ν™”ν•  수 있음

3) 데이터 보쑴

  • μ‚¬μš©μžκ°€ μ•± λ‚΄μ—μ„œ 이동할 λ•Œ 데이터λ₯Ό λ³΄μ‘΄ν•˜λŠ” 방법을 μ•Œ 수 있음
  • ex. μ•‘ν‹°λΉ„ν‹°κ°€ μΌμ‹œμ μœΌλ‘œ μ€‘λ‹¨λ˜κ±°λ‚˜ μ†Œλ©Έλ˜λ”λΌλ„ μ€‘μš”ν•œ 데이터λ₯Ό μ €μž₯ν•˜μ—¬ μ‚¬μš©μžκ°€ 이전 μƒνƒœλ‘œ λŒμ•„κ°ˆ 수 있게 ν•  수 있음

4) μ•± μƒνƒœ 관리

  • 앱이 ν¬κ·ΈλΌμš΄λ“œμ™€ λ°±κ·ΈλΌμš΄λ“œλ‘œ 이동할 λ•Œ μ•±μ˜ μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜λŠ” 것이 μ€‘μš”ν•¨
  • 앱이 μ–΄λ–€ μƒνƒœμ— μžˆλŠ”μ§€ νŒŒμ•…ν•˜κ³ , ν•„μš”μ— 따라 μ μ ˆν•œ 쑰치λ₯Ό μ·¨ν•  수 있음

5) 문제 ν•΄κ²°

  • λ°œμƒν•˜λŠ” 문제λ₯Ό 더 μ‰½κ²Œ ν•΄κ²°ν•  수 있음
    • μ•‘ν‹°λΉ„ν‹°μ˜ 생λͺ… μ£ΌκΈ°λ₯Ό μ΄ν•΄ν•˜μ§€ μ•Šκ³  앱을 κ°œλ°œν•˜λ©΄ 앱이 μ˜ˆμƒμΉ˜ λͺ»ν•œ λ™μž‘μ„ ν•  수 있음

3. Stages of the Activity Lifecycle

The Activitiy Lifecycle

1) onCreate()

  • μ•‘ν‹°λΉ„ν‹°κ°€ 처음 생성될 λ•Œ 호좜
  • 이 λ‹¨κ³„μ—μ„œλŠ” μ•‘ν‹°λΉ„ν‹°μ˜ μ΄ˆκΈ°ν™” μž‘μ—…μ΄ 이루어지며, λ ˆμ΄μ•„μ›ƒμ„ μ„€μ •ν•˜κ³  λ¦¬μ†ŒμŠ€λ₯Ό μ΄ˆκΈ°ν™”ν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•¨
override fun onCreate(savedInstanceState: Bundle?) {
	super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    
    // μ•‘ν‹°λΉ„ν‹° μ΄ˆκΈ°ν™” μž‘μ—… λ“± μˆ˜ν–‰
}

2) onStart()

  • μ•‘ν‹°λΉ„ν‹°κ°€ μ‚¬μš©μžμ—κ²Œ 보여지기 μ‹œμž‘ν•  λ•Œ 호좜됨
  • 앱을 화면에 ν‘œμ‹œν•˜μ§€λ§Œ μ‚¬μš©μžλŠ” 아직 μƒν˜Έμž‘μš©ν•  수 μ—†μŒ
override fun onStart() {
	super.onStart()
    
    // μ•‘ν‹°λΉ„ν‹°κ°€ ν¬κ·ΈλΌμš΄λ“œμ— 듀어왔을 λ•Œ μˆ˜ν–‰ν•  μž‘μ—… κ΅¬ν˜„
}

3) onResume()

  • μ•‘ν‹°λΉ„ν‹°κ°€ ν¬κ·ΈλΌμš΄λ“œμ— 듀어와 μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš©μ΄ κ°€λŠ₯ν•œ μƒνƒœκ°€ λ˜μ—ˆμ„ λ•Œ 호좜됨
  • 앱을 μ „κ²½μœΌλ‘œ κ°€μ Έμ˜€κ³  μ‚¬μš©μžλŠ” μƒν˜Έμž‘μš©ν•  수 있음
override fun onResume() {
	super.onResume()
    
    // μ•‘ν‹°λΉ„ν‹°κ°€ μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš©ν•  수 μžˆλŠ” μƒνƒœμΌ λ•Œ μˆ˜ν–‰ν•  μž‘μ—… κ΅¬ν˜„
}

4) onPause()

  • λ‹€λ₯Έ μ•‘ν‹°λΉ„ν‹°κ°€ ν¬κ·ΈλΌμš΄λ“œμ— λ‚˜νƒ€λ‚˜κ±°λ‚˜ ν™ˆ λ²„νŠΌ λ“±μœΌλ‘œ 인해 μ•‘ν‹°λΉ„ν‹°κ°€ λ°±κ·ΈλΌμš΄λ“œλ‘œ κ°€λ €μ§ˆ λ•Œ 호좜됨
  • μ•‘ν‹°λΉ„ν‹°κ°€ μΌμ‹œμ μœΌλ‘œ 더 이상 μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš©ν•  수 μ—†λŠ” μƒνƒœκ°€ 됨
  • 이 λ‹¨κ³„μ—μ„œλŠ” μ€‘μš”ν•œ λ¦¬μ†ŒμŠ€ ν•΄μ œλ‚˜ μ €μž₯ μž‘μ—… 등을 μ²˜λ¦¬ν•΄μ•Ό 함
override fun onPause() {
	super.onPause()
    
    // μ•‘ν‹°λΉ„ν‹°κ°€ μΌμ‹œμ μœΌλ‘œ 더 이상 μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš©ν•  수 μ—†λŠ” μƒνƒœμΌ λ•Œ μˆ˜ν–‰ν•  μž‘μ—… κ΅¬ν˜„
}

5) onStop()

  • μ•‘ν‹°λΉ„ν‹°κ°€ 더 이상 화면에 보이지 μ•Šμ„ λ•Œ 호좜됨
  • λ‹€λ₯Έ μ•‘ν‹°λΉ„ν‹°κ°€ 화면을 μ™„μ „νžˆ κ°€λ¦¬κ±°λ‚˜ 앱이 λ°±κ·ΈλΌμš΄λ“œλ‘œ λ“€μ–΄κ°ˆ λ•Œ 호좜됨
override fun onStop() {
	super.onStop()
    
    // μ•‘ν‹°λΉ„ν‹°κ°€ ν™”λ©΄μ—μ„œ μ™„μ „νžˆ μ‚¬λΌμ§ˆ λ•Œ μˆ˜ν–‰ν•  μž‘μ—… κ΅¬ν˜„
}

6) onRestart()

  • onStop() 후에 μ•‘ν‹°λΉ„ν‹°κ°€ λ‹€μ‹œ ν¬κ·ΈλΌμš΄λ“œλ‘œ λŒμ•„μ˜¬ λ•Œ 호좜됨
  • 이후 onStart() λ©”μ„œλ“œκ°€ 호좜됨
override fun onRestart() {
	super.onRestart()
    
    // μ•‘ν‹°λΉ„ν‹°κ°€ λ‹€μ‹œ ν¬κ·ΈλΌμš΄λ“œλ‘œ λŒμ•„μ™”μ„ λ•Œ μˆ˜ν–‰ν•  μž‘μ—… κ΅¬ν˜„
}

7) onDestroy()

  • μ•‘ν‹°λΉ„ν‹°κ°€ μ†Œλ©Έλ˜κΈ° 전에 호좜됨
  • μ•‘ν‹°λΉ„ν‹°κ°€ μ’…λ£Œλ˜κ±°λ‚˜ 앱이 μ™„μ „νžˆ μ’…λ£Œλ  λ•Œ 호좜되며, λ¦¬μ†ŒμŠ€ ν•΄μ œλ‚˜ 데이터 μ €μž₯ λ“± 마무리 μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό 함
override fun onDestroy() {
	super.onDestroy()
    
    // μ•‘ν‹°λΉ„ν‹°κ°€ μ†Œλ©Έλ˜κΈ° 전에 ν•„μš”ν•œ 정리 μž‘μ—… κ΅¬ν˜„
}



[μ°Έκ³  μ‚¬μ΄νŠΈ]

'Stages of the Activity lifecycle', developer

1개의 λŒ“κΈ€

comment-user-thumbnail
2023λ…„ 8μ›” 2일

잘 μ½μ—ˆμŠ΅λ‹ˆλ‹€. 쒋은 정보 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

λ‹΅κΈ€ 달기