Android/Android์˜ ๋ชจ๋“  ๊ฒƒ

๐Ÿ‘‹Android์˜ ๋ชจ๋“  ๊ฒƒ : 1๏ธโƒฃActivity์™€ Fragment ์ƒ๋ช…์ฃผ๊ธฐ, 2๏ธโƒฃ Activity์™€ Framgnet ์ฐจ์ด

DevGoni 2022. 3. 16. 11:11
728x90

https://goni95.tistory.com/173

 

๐Ÿ‘‹Android์— ๋ชจ๋“  ๊ฒƒ ๊ฐœ๋…

Android ๋ชฉ  ์ฐจ Android Android SDK Platform Architecture App Manifest Android Context App Components Activity์™€ Fragment ์ƒ๋ช…์ฃผ๊ธฐ Activity์™€ Fragment ์ฐจ์ด LayoutInflater ANR View ๋ฐ ViewGroup ํ™”๋ฉด..

goni95.tistory.com

 

Fragment ํƒ„์ƒ ๋ฐฐ๊ฒฝ

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

 

1๏ธโƒฃ Activity์™€ Fragment ์ƒ๋ช…์ฃผ๊ธฐ

1. Activity ์ƒ๋ช…์ฃผ๊ธฐ

์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋ฉด์„œ Activity์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด Android ์‹œ์Šคํ…œ์ด ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Œ์„ ์•Œ๊ธฐ์œ„ํ•ด ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Activit ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ์—๋Š” onCreate(), onStart(), onRestart(), onResume(), onPause(), onStop() ๋ฐ onDestroy()๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ฒ˜์Œ ์ƒ์„ฑ๋  ์‹œ onCreate()๊ฐ€ ํ˜ธ์ถœ์ด ๋ฉ๋‹ˆ๋‹ค. (์ดˆ๊ธฐํ™” ์ž‘์—…)
์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๊ธฐ ์ง์ „์— onStart()๊ฐ€ ํ˜ธ์ถœ์ด ๋ฉ๋‹ˆ๋‹ค. 
์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ๋‹ค๊ฐ€, ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ธฐ ์ง์ „์— onRestart()๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์งˆ๋•Œ onResume()์ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ƒํ˜ธ์ž‘์šฉ ๊ฐ€๋Šฅ)
์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ๊ฐ€๋ ค์ง€๊ฑฐ๋‚˜, ํฌ์ปค์Šค๋ฅผ ์žƒ์€ ๊ฒฝ์šฐ onPause()๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ๋”์ด์ƒ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€์ง€ ์•Š์œผ๋ฉด onStop()์ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์†Œ๋ฉธ๋˜๊ธฐ ์ง์ „์— onDestroy()๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

 

2. Fragment ์ƒ๋ช…์ฃผ๊ธฐ

Fragment ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด, Android ์‹œ์Šคํ…œ์—์„œ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋จ์„ ์•Œ๊ธฐ์œ„ํ•ด ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Fragment ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ์—๋Š” onAttach(), onCreate(), onCreateView(), onCreateView(), onStart(), onResume(), onPause(), onStop(), onDestroyView(), onDestroy(), onDetach()๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
 
- Activity Created -


onAttach() : ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ์ข…์†๋  Activity์˜ Context๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ๋ถ™์„ ๋•Œ ์ตœ์ดˆ ํ•œ๋ฒˆ ํ˜ธ์ถœ๋˜๋ฉฐ, ์™„๋ฒฝํ•˜๊ฒŒ ์ƒ์„ฑ๋œ ์ƒํƒœ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.
onCreate() : ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ Activity์— ์˜ํ•ด ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์— ํ˜ธ์ถœ๋˜๋ฉฐ, ์•กํ‹ฐ๋น„ํ‹ฐ์˜ Bundle์„ ์ธ์ž๋กœ ๋ฐ›๊ณ , ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ๋‹ค๋ฅด๊ฒŒ UI ๊ด€๋ จ ์ž‘์—…์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
onCreateView() : Layout์„ inflateํ•˜์—ฌ ํ”„๋ž˜๊ทธ๋จผํŠธ์˜ View๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ํ˜ธ์ถœ๋˜์ง€๋งŒ, View๊ฐ€ ์ดˆ๊ธฐํ™” ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์ž‘์—…์€ ์•กํ‹ฐ๋น„ํ‹ฐ์˜ onCreate()๊ฐ€ ๋๋‚˜๊ณ  View๊ฐ€ ์™„์ „ํžˆ ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ ํ˜ธ์ถœ๋˜๋Š” onViewCreated() ๋ฉ”์„œ๋“œ์—์„œ View์— ๋Œ€ํ•œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.
onViewStateRestored() : ์ €์žฅํ•ด๋‘” ๋ชจ๋“  ์ƒํƒœ ๊ฐ’์ด ๋ณต์›๋์„ ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๋ ๋ผ์„œ ๊ฐ UI ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ฐ’์„ ์ฒดํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
onStart() : ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๊ธฐ ์ „์— ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
 
onResume() : ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ํ™”๋ฉด์— ๋ณด์—ฌ์งˆ ๋•Œ ํ˜ธ์ถœ๋˜๋ฉฐ, ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
 
onPause() : ํ™”๋ฉด์˜ ์ผ๋ถ€๊ฐ€ ๊ฐ€๋ ค์กŒ๊ฑฐ๋‚˜, ํฌ์ปค์Šค๋ฅผ ์žƒ์€ ๊ฒฝ์šฐ์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
 
onStop() : ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€์ง€ ์•Š์„ ๋•Œ ํ˜ธ์ถœ๋˜๋ฉฐ, ํ”„๋ž˜๊ทธ๋จผํŠธ์˜ ๊ธฐ๋Šฅ์ด ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.
 
onDestroyView() : ํ”„๋ž˜๊ทธ๋จผํŠธ์˜ View๋ฅผ ์ œ๊ฑฐํ•  ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. (์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ํ”„๋ž˜๊ทธ๋จผํŠธ ์ƒ์„ฑ ์‹œ addToBackStack()์„ ์š”์ฒญํ•œ ๊ฒฝ์šฐ onDestroy๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  Instance๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๊ฐ€ Fragment๋ฅผ ๋‹ค์‹œ ๋ถ€๋ฅผ ๋•Œ onCreateView()๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋‹ค์‹œ ํ™”๋ฉด์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.)
onDestroy() : View๊ฐ€ ์ œ๊ฑฐ๋œ ํ›„ ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ์™„์ „ํžˆ ์†Œ๋ฉธ๋˜๊ธฐ ์ „์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
onDetach() : ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ์™„์ „ํžˆ ์†Œ๋ฉธ๋˜๊ณ , ์•กํ‹ฐ๋น„ํ‹ฐ์™€์˜ ์—ฐ๊ฒฐ์ด ๋Š์–ด์งˆ ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.


- Activity Destroyed -


 

2๏ธโƒฃ Activity, Fragment ์ฐจ์ด

Activity๋Š” ๋””์Šคํ”Œ๋ ˆ์ด์˜ ์ „์ฒดํ™”๋ฉด์„ ์ฐจ์ง€ํ•˜๋ฉฐ View๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉด์„œ ๋…๋ฆฝ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํฐ ํ‹€๋กœ Back Stack์— ์ž๋™์ ์œผ๋กœ ๋„ฃ์–ด์ง€์ง€๋งŒ,

 

Fragment๋Š” ๋””์Šคํ”Œ๋ ˆ์ด์˜ ์ž‘์€ ๋ถ€๋ถ„๋งŒ ์ฐจ์ง€ํ•˜๋„๋ก ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋””์ž์ธ์— ์œ ์—ฐ์„ฑ์„ ๊ฐ€์ง€๋ฉฐ Activity์™€ View์˜ ํŠน์„ฑ์„ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ์–ด Activity์— ์ข…์†์ ์ธ ์†Œํ˜• ํ‹€๋กœ Activity์™€ Fragment๋ฅผ ์ด์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” FragmentManager๋ฅผ ์ด์šฉํ•ด Transaction์„ ํ†ตํ•ด Fragment๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ต์ฒดํ•˜๋Š” ์ž‘์—…์„ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.