ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] Activity๋ž€? Activity LifeCycle ์™„๋ฒฝ ์ดํ•ด
    Android 2021. 11. 3. 02:55
    ๋ฐ˜์‘ํ˜•

    Activity๋ž€?

      ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์„ ํ•œ ๋ฒˆ์ด๋ผ๋„ ํ•ด๋ดค๋‹ค๋ฉด Activity๋Š” ๋ฌด์กฐ๊ฑด ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.  ์ € ๋˜ํ•œ Activity๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ตฌ์ฒด์ ์œผ๋กœ Activity์˜ ์—ญํ• ์ด ๋ฌด์—‡์ด๊ณ , LifeCycle์„ ์ƒ๊ฐํ•ด์„œ ๊ฐœ๋ฐœ์„ ํ•œ ์ ์ด ์—†์„ ์ •๋„๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๋ฉด์ ‘์—์„œ๋„ ๋‹จ๊ณจ ์งˆ๋ฌธ์œผ๋กœ ๋น ์ง์—†์ด ๋‚˜์˜ค๋Š” ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ œ๋Œ€๋กœ ๊ณต๋ถ€ํ•˜๊ณ ์ž ์ด ๊ธ€์„ ์“ฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

      ๋ณธ๋ก ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ Activtiy๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ 4๋Œ€ ์ปดํฌ๋„ŒํŠธ ์ค‘ ํ•˜๋‚˜๋กœ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋Š” UI๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ ํฐ์—์„œ ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋ฉด ๋ณด์—ฌ์ง€๋Š” ํ™”๋ฉด์ด ๋Œ€๋ถ€๋ถ„ Activity๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ข€ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ธฐ ์ „์— Entry Point์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

     

    โ€ป Entry Point

    • ์†Œํ”„ํŠธ์›จ์–ด์—์„œ Entry Point๋Š” ์ง„์ž…์ ์„ ๋œปํ•˜๋ฉฐ, C/C++, Java ๊ฐœ๋ฐœ ์‹œ main ํ•จ์ˆ˜๋กœ Entry Point์ž…๋‹ˆ๋‹ค.
    • ๋ณดํ†ต Entry Point๋Š” main๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์˜ค์ง ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜์—ฌ ๋‹จ์ผ ์ง„์ž…์ ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋‹จ์ผ ์ง„์ž…์ ์ด ์•„๋‹Œ 4๋Œ€ ์ปดํฌ๋„ŒํŠธ(Activity, BroadCastReceiver, Service, ContentProvider) ๋ฅผ ํ†ตํ•ด์„œ ์ง„์ž…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • ์ฆ‰, Activity๋„ Entry Point์ค‘ ํ•˜๋‚˜๋กœ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” UI ์ œ๊ณต๊ณผ ๋™์‹œ์— ์ง„์ž…์  ์—ญํ• ๋„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ์—์„œ Entry Point๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ์ œ์–ด๊ถŒ์„ ๋„˜๊ธฐ๊ธฐ ์œ„ํ•ด์„œ Manifest.xml์— ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

      ๋‹ค์‹œ ์ •๋ฆฌํ•˜์ž๋ฉด, Acitivty๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋กœ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋Š” UI๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ๊ณผ ์‹œ์Šคํ…œ์—์„œ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋กœ ์ œ์–ด๊ถŒ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ง„์ž…์  ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

    Activity ์„ค๊ณ„

      ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ชจ๋“  ํ™”๋ฉด ๋‹น ํ•˜๋‚˜์˜ Acitivty๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด apk ํฌ๊ธฐ๋„ ์ปค์ง€๊ณ   ํ™”๋ฉด ์ด๋™ ๊ฐ„ ์‹œ๊ฐ„์ ์ธ ์†Œ์š”๋„ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋งŽ์ด ๋งŒ๋“ค์ง€ ์•Š์€ ๊ฒƒ์ด ๊ถŒ์žฅ๋˜๋ฉฐ, UI ์•ก์…˜์ด ๋งŽ์œผ๋ฉด Activitiy ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•˜๊ณ  ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด Fragment๋‚˜ popup์œผ๋กœ ๋Œ€์ฒดํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. 

     

     

    Activty LifeCycle

      Activitiy์˜ ์—ญํ• ์— ๋Œ€ํ•ด ์•Œ์•˜์œผ๋‹ˆ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ LifeCycle์— ๋Œ€ํ•ด ์ˆ™์ง€ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. LifeCycle์— ๋Œ€ํ•ด ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ˜๋‚ฉํ•ด์•ผ ๋  ๋ฆฌ์†Œ์Šค๋“ค์ด ๋ฐ˜๋‚ฉ๋˜์ง€ ์•Š๊ณ , DB ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ ์ˆ˜ ์—†๋‹ค๋˜๊ฐ€, ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 6๊ฐœ์˜ ์ฝœ๋ฐฑ(onCreate, onStart, onResume, onPause, onStop, onDestory)์ด ์ œ๊ณต๋˜๋ฉฐ Activity๊ฐ€ ์–ด๋–ค ์ƒํƒœ์ผ ๋•Œ ํ•ด๋‹น ์ฝœ๋ฐฑ์— ํ˜ธ์ถœ๋˜๋Š”์ง€ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

     

    https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko

     

    onCreate

      ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ์ด Activity๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‹คํ–‰๋˜๋Š” ์ฝœ๋ฐฑ๋ฉ”์†Œ๋“œ๋กœ ์ „์ฒด LifeCycle ๋™์•ˆ ํ•œ ๋ฒˆ ํ˜ธ์ถœ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ViewBinding, DataBinding๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UI๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” Layout๊ณผ ์—ฐ๊ฒฐํ•˜๊ณ  ViewModel๊ณผ ์˜ ์—ฐ๊ฒฐ ๋˜๋Š” ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ๊ณผ ๊ฐ™์€ Activity์˜ ์‹œ์ž‘ ๋กœ์ง๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ViewBinding๊ณผ DataBinding์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด setContentView๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ์•ผ ํ•˜๊ณ  ์ด ๋ฉ”์†Œ๋“œ๋Š” onCreate ์ฝœ๋ฐฑ์— ์ข…์†์ ์ž…๋‹ˆ๋‹ค. 

      ์ด ๋ฉ”์„œ๋“œ์—๋Š” Key์™€ Value์˜ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๋Š” Bundle ํƒ€์ž…์˜ savedInstanceState ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ Activity์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์—ฌ ์ƒ์„ฑ ์‹œ์— ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜๋กœ ์ฒ˜์Œ Activity๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค๋ฉด ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜์—๋Š” null ๊ฐ’์ž…๋‹ˆ๋‹ค.

     

    onStart

      onCreate ์ดํ›„ ์‹œ์ž‘์ƒํƒœ๊ฐ€ ๋˜์—ˆ๊ณ , ์‹œ์Šคํ…œ์€ ์—ฐ๋‹ฌ์•„ onStart, onResume ์ฝœ๋ฐฑ์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. onStart๊ฐ€ ํ˜ธ์ถœ์€ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋‰˜์–ด ์‹คํ–‰๋˜๋Š”๋ฐ ์ฒ˜์Œ ์ƒ์„ฑ ์ดํ›„ ํ˜ธ์ถœ๋  ๋•Œ์™€ onRestart ์ฝœ๋ฐฑ์„ ์ˆ˜์‹  ํ›„ ์žฌ์‹œ์ž‘๋  ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.  onStart์—์„œ๋Š” Activity๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜๊ณ , ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ์ด๋™ํ•  ์ค€๋น„๋ฅผ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฝœ๋ฐฑ์€ ๋น ๋ฅด๊ฒŒ ์™„๋ฃŒ๊ฐ€ ๋˜๊ณ  onResume ์ฝœ๋ฐฑ์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

     

    onResume

      onResume์ด ํ˜ธ์ถœ๋œ ์ดํ›„์—๋งŒ Activity๊ฐ€ ํฌ๊ทธ๋ผ์šด๋“œ ์ƒํƒœ๊ฐ€ ๋˜์—ˆ๊ณ  ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ setContentView ๊ฒฐ๊ณผ๊ฐ€ ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์žฌ์‹œ์ž‘ ์ดํ›„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์žˆ๋˜ Activity๊ฐ€ ํฌ๊ทธ๋ผ์šด๋“œ์— ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ๋ชจ๋“  ํ™”๋ฉด์— ํ•ด๋‹น Acitivty๊ฐ€ ๊ฐ€๋“ ์ฐฌ ๋ชจ์Šต์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ „ํ™”๊ฐ€ ์˜ค๊ฑฐ๋‚˜ , ํ™ˆ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ•ด๋‹น Activity์˜ ํ™”๋ฉด์ด ๊บผ์ง€๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „๊นŒ์ง€ onResume ์ƒํƒœ์—์„œ ๋จธ๋ฌด๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

     ํ™”๋ฉด์ด ๊บผ์ง€๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด onPause ๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ  ๋‹ค์‹œ ์žฌ๊ฐœ๊ฐ€ ๋˜๋ฉด onResume ์ฝœ๋ฐฑ์ด ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ๋„ ์„ค๋ช…ํ•˜๊ฒ ์ง€๋งŒ, onResume์€ onPause์—์„œ ํ•ด์ œํ–ˆ๋˜ ๋ฆฌ์†Œ์Šค๋“ค์„ ๋‹ค์‹œ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, onResume๊ณผ onPause๋Š” ๋Œ€์นญ์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค/๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™”์™€ ํ•ด์ œ๋ฅผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

     

    onPause

      Activity๊ฐ€ ํฌ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋ฐ”๋€Œ๋Š” ์‹œ์ ์œผ๋กœ ํ™”๋ฉด์˜ ์ผ๋ถ€๊ฐ€ ๊ฐ€๋ ค์ง„ ์ƒํƒœ์ผ ๋•Œ onPause ์ฝœ๋ฐฑ์ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ƒˆ๋กœ์šด Acitvity๊ฐ€ ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ๋‚˜์˜ค๊ธฐ์ „๊นŒ์ง€๋Š” onPause ์ƒํƒœ์— ์žˆ๋‹ค๊ฐ€ ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ๋‚˜์˜ค๋Š” ์ˆœ๊ฐ„ ๋ชจ๋“  ํ™”๋ฉด์ด ๊ฐ€๋ ค์ง€๋ฉด onStop ์ฝœ๋ฐฑ์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋˜๋Š” Dialog Activity๋‚˜ ํˆฌ๋ช… Acitivty๊ฐ€ ์œ„์— ๋œฐ ๊ฒฝ์šฐ์—๋„ onPause์ƒํƒœ์— ๋จธ๋ฌผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ๋ฉด์ ‘์—์„œ๋„ onPause์™€ onStop์˜ ์ฐจ์ด๋ฅผ ์ž์ฃผ ์งˆ๋ฌธํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. onPause๋Š” ํฌ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ „ํ™˜๋˜๋Š” ์‹œ์ ์œผ๋กœ ํ™”๋ฉด์˜ ์ผ๋ถ€๊ฐ€ ๊ฐ€๋ ค์ง„ ์ƒํƒœ์— ํ˜ธ์ถœ๋˜๊ณ , onStop์€ ์™„์ „ํžˆ ํ™”๋ฉด์ด ๊ฐ€๋ ค์ง€๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

      onPause๋Š” ์•„์ฃผ ์ž ๊น ์‹คํ–‰๋˜๋ฏ€๋กœ ํ˜„์žฌ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜, ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ ๋˜๋Š” DB ํŠธ๋ž™์žญ์…˜๊ณผ ๊ฐ™์€ ์‹œ๊ฐ„ ์†Œ์š”๊ฐ€ ์žˆ๋Š” ์ž‘์—…๋“ค์„ ์‹คํ–‰ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ถ€ํ•˜๊ฐ€ ํฐ ์ž‘์—…๋“ค์€ ์ฃผ๋กœ onStop์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

     

    onStop

      ์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด Activity๊ฐ€ ์ด๋ฒคํŠธ๋กœ ์ธํ•ด ์ƒˆ๋กœ์šด ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚˜์„œ ์ „์ฒด ํ™”๋ฉด์„ ๊ฐ€๋ฆฌ๊ฒŒ ๋˜๋ฉด onStop ์ด ํ˜ธ์ถœ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. onStop ์—์„œ๋Š” Activity์—์„œ ์ด์ œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๋ฆฌ์†Œ์Šค๋“ค์„ ํ•ด์ œํ•˜๊ฑฐ๋‚˜ ํ˜„์žฌ ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ DB ์ž‘์—…๋“ค์„ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. onStop์—์„œ ์ค‘์š”ํ•œ ์ ์€ Activity ๊ฐ์ฒด๋Š” ์•„์ง ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์— ๋จธ๋ฌด๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ์ฒด์—์„œ  window manager์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์„ ๋ฟ ๋ชจ๋“  ์ƒํƒœ๋‚˜ ๋ฉค๋ฒ„ ์ •๋ณด๋Š” ๊ณ„์† ๊ด€๋ฆฌ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Activity๊ฐ€ ๋‹ค์‹œ ์žฌ๊ฐœ๋˜๋ฉด ์ด ์ •๋ณด๋“ค์„ ๋‹ค์‹œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฌ๊ฐœ ์‹œ onCreate์—์„œ ์ƒ์„ฑํ•œ ๊ตฌ์„ฑ์š”์†Œ๋Š” ๋‹ค์‹œ ์ดˆ๊ธฐํ™” ํ•  ํ•„์š” ์—†๊ณ  ๋ ˆ์ด์•„์›ƒ์— ์žˆ๋Š” ๊ฐ View ๊ฐ์ฒด๋„ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๊ธฐ๋กํ•˜๊ธฐ์— ์ €์žฅ ๋ฐ ๋ณต์›ํ•  ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

     

    onDestroy

      Activity๊ฐ€ ์™„์ „ํžˆ ์†Œ๋ฉธ๋˜๊ธฐ ์ „์— onDestory ์ฝœ๋ฐฑ์ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๊ณต์‹๋ฌธ์„œ์—์„œ๋Š” onDestory๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋Š” 2๊ฐ€์ง€๋ผ๊ณ  ๋‚˜์™€์žˆ์Šต๋‹ˆ๋‹ค.  finish() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ Activity๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ์™€ ๊ธฐ๊ธฐ ํšŒ์ „๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ์ผ์‹œ์ ์œผ๋กœ ์†Œ๋ฉธ๋˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๊ทธ ์™ธ์—๋„ ์‹œ์Šคํ…œ์— ์˜ํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ œ๊ฑฐ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๊ณ , ์ด ๊ฒฝ์šฐ์—์„œ๋„ onDestory๊นŒ์ง€ ํ˜ธ์ถœ์ด ๋ฉ๋‹ˆ๋‹ค.
      ์ž์„ธํžˆ ์„ค๋ช…์„ ํ•˜๋ฉด, ์—ฌ๋Ÿฌ ํ…Œ์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํƒœ์Šคํฌ๋ฅผ ๊ฐ–๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์•„์งˆ ๊ฒฝ์šฐ์—๋Š” OutOfMemoryError๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ, ์—ฌ๋Ÿฌ ํƒœ์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด OutOfMemoryError๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ…Œ์Šคํฌ์˜ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ข…๋ฃŒ์‹œํ‚ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์ด ์‹œ์Šคํ…œ์—์„œ Acitivty๋ฅผ ์ œ๊ฑฐํ•  ๋•Œ์—๋„ onDestory๊นŒ์ง€ ํ˜ธ์ถœ์ด ๋ฉ๋‹ˆ๋‹ค.

      

     

    โ€ป  ์ƒ๋ช…์ฃผ๊ธฐ  ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ์ˆœ์„œ

      ํ—ท๊ฐˆ๋ฆด๋งŒํ•œ ์ƒํ™ฉ์—์„œ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ํ˜ธ์ถœ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์”ฉ ์ƒ๊ฐํ•ด๋ณด์‹  ํ›„์— ํ™•์ธํ•ด๋ณด์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

     

    • ์‹œ์ž‘ํ•  ๋•Œ : onCreate  →  onStart  →  onResume
    • ํ™”๋ฉด ํšŒ์ „ํ•  ๋•Œ : onPause  →  onStop  →  onDestory  →  onCreate  →  onStart  →  onResume
    • ํ™ˆ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ : onPause  →  onStop
    • ํ™ˆ ์ด๋™ ํ›„ ๋‹ค์‹œ ๋Œ์•„์˜ฌ ๋•Œ : onRestart  →  onStart  →  onResume
    • ๋ฐฑ ๋ฒ„ํŠผ ํด๋ฆญํ•˜์—ฌ ์•กํ‹ฐ๋น„ํ‹ฐ ์ข…๋ฃŒ ์‹œ : onPause  →  onStop  →  onDestory

     

    โ€ป  ์•กํ‹ฐ๋น„ํ‹ฐ ์ „ํ™˜ ์‹œ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ

      Activity A์—์„œ Acitivity B๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๋ฉ”์†Œ๋“œ๋“ค์ด ์–ด๋–ป๊ฒŒ ํ˜ธ์ถœ๋˜๋Š”์ง€๋„ ์•Œ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ € ๋˜ํ•œ ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ•ด์„œ Activity A๊ฐ€ onStop๊นŒ์ง€ ํ˜ธ์ถœ๋œ ์ดํ›„์— Activity B๊ฐ€ onCreate, onStart, onResume ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์™€ ๊ฐ™์ด ์‹คํ–‰๋˜๋Š”๊ฒŒ ์•„๋‹™๋‹ˆ๋‹ค.

     

    1.   Activity A๋Š” onPause ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. (Activity A๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ด๋™)
    2.   Activity B๋Š” onCreate, onStart, onResume ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํฌ๊ทธ๋ผ์šด๋“œ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
    3.   Activity B๊ฐ€ onResume๊นŒ์ง€ ํ˜ธ์ถœ๋œ ์ดํ›„์—๋Š” ํฌ๊ทธ๋ผ์šด๋“œ ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ์ „์ฒด ํ™”๋ฉด์„ ๊ฐ€๋“ ์ฑ„์šฐ๊ธฐ ๋•Œ๋ฌธ์— Activity A๊ฐ€ onStop ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

      ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋งŒ์•ฝ ๋‘ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค๋‚˜ DB๋ฅผ ์‚ฌ์šฉํ•  ์‹œ ๋ฌธ์ œ๋  ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Activity A๊ฐ€ onPause๊ฐ€ ์•„๋‹Œ onStop์—์„œ ํด๋ž˜์Šค, DB๋ฅผ ์ €์žฅํ•  ์‹œ Activity B์—์„œ๋Š” ์ €์žฅ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜๊ณ  ๊ทธ ์ดํ›„์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๊ฐ’๋“ค์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•กํ‹ฐ๋น„ํ‹ฐ ์ „ํ™˜ ์‹œ์— ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด ์ž˜ ์•Œ๊ณ  ์‚ฌ์šฉํ•˜๋„๋ก ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

     

     

    โ€ป  ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ์‹œ ์ฃผ์˜์‚ฌํ•ญ

    ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ/์ œ๊ฑฐ๋Š” ๋Œ€์นญ์œผ๋กœ ์‹คํ–‰

      onCreate์—์„œ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑํ–ˆ์œผ๋ฉด onDestory์— ํ•ด์ œ๋ฅผ ํ•˜๊ณ  onResume์— ์ƒ์„ฑํ•˜๋ฉด onPause์— ์ œ๊ฑฐ๋ฅผ ํ•ด์„œ ๋Œ€์นญ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ๋งŽ์ด ์˜ˆ์‹œ๋ฅผ ๋“ค์—ˆ๋“ฏ์ด, DB๋ฅผ onCreate์—์„œ ์—ด์—ˆ๊ณ  onPause๊ฐ€ ๋˜๋ฉด ๋‹ซ๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ ์žฌ์‹œ์ž‘์ด ๋˜๋ฉด ๋‹ซํžŒ DB๋ฅผ ์—ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, onCreate์—์„œ DB๋ฅผ ์—ด์—ˆ๋‹ค๋ฉด onDestory์— ๋‹ซ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

     

    finish() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ํ›„ return ํ•„์ˆ˜

      finish ํ•จ์ˆ˜๋กœ ์•กํ‹ฐ๋น„ํ‹ฐ ์ข…๋ฃŒ ์‹œ์— finish ๋ฉ”์†Œ๋“œ๋Š” ์‹œ์Šคํ…œ์— ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ข…๋ฃŒํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ๋ฟ ๋ฆฌํ„ด์„ ํ•˜๋Š”๊ฒŒ ์•„๋‹™๋‹ˆ๋‹ค. finish ๋ฉ”์†Œ๋“œ ์ดํ›„์—๋„ ๋กœ์ง์ด ์žˆ๋‹ค๋ฉด, ํ•ด๋‹น ๋กœ์ง์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ •์ƒ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ finish ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ–ˆ๋‹ค๋ฉด return์„ ํ•„์ˆ˜๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ์ดํ›„ ๋กœ์ง์ด ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

     

     

     

    ์ฐธ๊ณ 

     

    ํ™œ๋™ ์ˆ˜๋ช… ์ฃผ๊ธฐ์— ๊ด€ํ•œ ์ดํ•ด  |  Android ๊ฐœ๋ฐœ์ž  |  Android Developers

    ํ™œ๋™์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ „ํ™” ๊ฑธ๊ธฐ, ์‚ฌ์ง„ ์ฐ๊ธฐ, ์ด๋ฉ”์ผ ๋ณด๋‚ด๊ธฐ ๋˜๋Š” ์ง€๋„ ๋ณด๊ธฐ์™€ ๊ฐ™์€ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์„ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๊ฐ ํ™œ๋™์—๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜

    developer.android.com

     

    ๋ฐ˜์‘ํ˜•

    'Android' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [Android] Preference, Shared Preference?  (0) 2021.11.19
    [Android] Thread, Handler, Looper, Message Queue ๋‹ค๋ฃจ๊ธฐ  (0) 2021.11.11
    [Android] Drawble layer-list  (0) 2021.08.15
    [Android] Robelctric Test๋ž€  (0) 2021.02.17
    [Android] Unit Test, JUnit4  (0) 2021.02.16
Designed by Tistory.