[ANDROID] ์•กํ‹ฐ๋น„ํ‹ฐ ์ƒ๋ช…์ฃผ๊ธฐ

Android Activity Life Cycle์ด๋ž€?

Android์˜ 4๋Œ€ ์ปดํฌ๋„ŒํŠธ ์ค‘ ํ•˜๋‚˜์ธ ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ UI๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ , ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ์ฃผ๋„ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ์ž…๋‹ˆ๋‹ค. Android์˜ ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ๊ณ ์œ ์˜ Life Cycle์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๊ธฐ๋„ ํ•˜๊ณ , ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ˆจ๊ธฐ๋„ ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž์˜ ํ–‰๋™์— ๋งž๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ํ–‰๋™์„ ํ›Œ๋ฅญํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐœ๋ฐœ์ž๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ์˜ Life Cycle์— ๋Œ€ํ•ด ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. 

Activity Life Cycle์˜ ํ๋ฆ„ 

Activity Life Cycle์€ ์ผ๋ฐ˜์ ์œผ๋กœ onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestroy() ์ˆœ์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

Android ์ƒ๋ช… ์ฃผ๊ธฐ

onCreate  

  1. Activity๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์œผ๋กœ, ํ•„์ˆ˜์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ๋งŒ ํ•˜๋Š” ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.
  2. ๋ณดํ†ต onCreate()๋Š” ์ „์ฒด ์ƒ๋ช… ์ฃผ๊ธฐ ๋™์•ˆ ํ•œ๋ฒˆ๋งŒ ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋Š” ์‹œ์ž‘ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ด ๋ฉ”์„œ๋“œ๋Š” ์ถ”๊ฐ€์ ์œผ๋กœ savedInstanceState ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์‹ ํ•˜๋Š”๋ฐ, ์ด๋Š” Activity์˜ ์ด์ „ ์ƒํƒœ๊ฐ€ ์ €์žฅ๋œ Bundle ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.  

onStart

  1. Activity๊ฐ€ ์‹œ์ž‘๋จ ์ƒํƒœ์— ๋“ค์–ด๊ฐ€๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  2. onStart()๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด Activity๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๊ฒŒ ๋˜๊ณ , ๋ชจ๋ฐ”์ผ ์•ฑ์€ Activity๋ฅผ ํฌ๊ทธ๋ผ์šด๋“œ์— ๋ณด๋‚ด ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.
  3. onStart() ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์™„๋ฃŒ๋˜๊ณ  ๋ฐ”๋กœ onResume() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

onResume

  1. ํ•ด๋‹น ์ฝœ๋ฐฑ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๋ชจ๋ฐ”์ผ ์•ฑ์€ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  2. ์–ด๋–ค Event๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์•ฑ์—์„œ ํฌ์ปค์Šค๊ฐ€ ๋– ๋‚  ๋•Œ๊นŒ์ง€ Activity๋Š” ์ด ์ƒํƒœ์— ๋จธ๋ฌด๋ฅด๋ฉฐ ๋ฐฉํ•ด๋˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Activity๋Š” ์ผ์‹œ์ •์ง€ ์ƒํƒœ์— ๋“ค์–ด๊ฐ€๊ณ  onPause()๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  3. ๋งŒ์•ฝ์— Activity๊ฐ€ ์ผ์‹œ์ •์ง€ ์ƒํƒœ์—์„œ  ์žฌ๊ฐœ๋จ ์ƒํƒœ๋กœ ๋Œ์•„์˜ค๋ฉด onResume() ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ onResume()๋กœ ๋Œ์•„์˜ฌ๋•Œ๋งˆ๋‹ค ํ•„์š”ํ•œ ๋‹ค๋ฅธ ์ดˆ๊ธฐํ™” ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

onPause

  1. ์‚ฌ์šฉ์ž๊ฐ€ Activity๋ฅผ ๋– ๋‚˜๋Š” ์ฒซ๋ฒˆ์งธ ์‹ ํ˜ธ๋กœ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  2. Activity๋Š” ์†Œ๋ฉธ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํฌ๊ทธ๋ผ์šด๋“œ์— ์žˆ์ง€ ์•Š์€ ๊ฒƒ ๋ฟ์ž…๋‹ˆ๋‹ค. onPause()๋Š” ์•„์ฃผ ์ž ๊น ์‹คํ–‰๋˜๋ฏ€๋กœ, CPU๋ฅผ ๋งŽ์ด ์š”๊ตฌํ•˜๋Š” ํฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ์—๋Š” ์ ์ ˆ์น˜ ์•Š์Šต๋‹ˆ๋‹ค.

onStop

  1. Activity๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ์ด์ƒ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ์ค‘๋‹จ๋จ ์ƒํƒœ์— ๋“ค์–ด๊ฐ€๊ณ , ์‹œ์Šคํ…œ์€ onStop()์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  2. ์—๋ฅผ ๋“ค์–ด ์ƒˆ๋กœ ์‹œ์ž‘๋œ Activity๊ฐ€ ํ™”๋ฉด ์ „์ฒด๋ฅผ ์ฐจ์ง€ํ•  ๊ฒฝ์šฐ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  3. onStop() ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์—ฌ CPU๋ฅผ ๋น„๊ต์  ๋งŽ์ด ์†Œ๋ชจํ•˜๋Š” ์ข…๋ฃŒ ์ž‘์—…์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ Activity๊ฐ€ ์ด ์ƒํ™ฉ์—์„œ ๋‹ค์‹œ ์‹œ์ž‘๋˜๋ฉด onRestart()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉฐ ์ด์–ด์„œ onStart()๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. 

onDestroy

  1. onDestroy()๋Š” Activity๊ฐ€ ์†Œ๋ฉธ๋˜๊ธฐ ์ „์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž๊ฐ€ Activity๋ฅผ ์™„์ „ํžˆ ๋‹ซ๊ฑฐ๋‚˜, Finish() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฝ์šฐ ๋˜๋Š” ๊ธฐ๊ธฐ ํšŒ์ „ ๋˜๋Š” ๋ฉ€ํ‹ฐ ์œˆ๋„์šฐ ๋ชจ๋“œ(๊ตฌ์„ฑ ๋ณ€๊ฒฝ)์œผ๋กœ ์ธํ•ด ์‹œ์Šคํ…œ์ด ์ผ์‹œ์ ์œผ๋กœ Activity๋ฅผ ์†Œ๋ฉธ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ Activity๊ฐ€ ์†Œ๋ฉธ๋˜๊ธฐ ์ „์— ํ•„์š”ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋ณดํ†ต 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