[Android] Fragment

๐Ÿ’ก์žฌ์‚ฌ์šฉ ๋ชฉ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ–ˆ๋˜ Fragment์— ๋Œ€ํ•ด ์ƒ์„ธํ•˜๊ฒŒ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

Fragment

  • Fragment๋Š” UI ๋˜๋Š” ๋น„ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ชจ๋“ˆํ™”๋œ ๊ตฌ์„ฑ์š”์†Œ ์ž…๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ์•กํ‹ฐ๋น„ํ‹ฐ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ™”๋ฉด์˜ ์ผ๋ถ€๋ฅผ ์ฐจ์ง€ํ•˜๊ฑฐ๋‚˜ ํ™”๋ฉด ์ „ํ™˜์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

์•กํ‹ฐ๋น„ํ‹ฐ ๋ฐฉ์‹์˜ ๋ฌธ์ œ์ 

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

Fragment Lifecycle

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

์ƒ์„ฑ ๊ด€๋ จ ์ฝœ๋ฐฑ

  • onAttach() : Fragment๊ฐ€ ์•กํ‹ฐ๋น„ํ‹ฐ์— ์ฒ˜์Œ ์—ฐ๊ฒฐ๋  ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • Fragment์—์„œ ์•กํ‹ฐ๋น„ํ‹ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • onCreate() : Fragment๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • onCreateView() : Fragment๊ฐ€ ์ž์‹ ์˜ UI๋ฅผ ์ฒ˜์Œ ์ƒ์„ฑํ•  ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ๋ฉ”์„œ๋“œ์—์„œ UI๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” View ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • onViewCreated() : onCreateView()๊ฐ€ ์™„๋ฃŒ๋œ ํ›„์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ๋ทฐ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ๋ทฐ ๊ด€๋ จ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • onActivityCreated() : Fragment์˜ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ์ด ์‹œ์ ์— ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ ์ƒํƒœ ์ฝœ๋ฐฑ

  • onStart() : Fragment๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ์ด ์‹œ์ ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • onResume() : Fragment๊ฐ€ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์ผ ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ focus๋ฅผ ์–ป์œผ๋ฉฐ, ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ์‹œ ์ •์ง€ ๋ฐ ์ •์ง€ ์ƒํƒœ ์ฝœ๋ฐฑ

  • onPause() : Fragment๊ฐ€ ์ผ์‹œ ์ค‘์ง€ ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๊ธฐ ์ „์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋ž˜๊ทธ๋จผํŠธ์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ๋ฉˆ์ถœ ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  • onStop() : Fragment๊ฐ€ ํ™”๋ฉด์—์„œ ์™„์ „ํžˆ ์‚ฌ๋ผ์ง€๊ธฐ ์ „์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • UI๊ฐ€ ๋” ์ด์ƒ ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ข…๋ฃŒ ๊ด€๋ จ ์ฝœ๋ฐฑ

  • onDestoryView() : Fragment์˜ ๋ทฐ๊ฐ€ ํŒŒ๊ดด๋  ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ทฐ์™€ ๊ด€๋ จ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • onDestory() : Fragment๊ฐ€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ์ด ์‹œ์ ์— ํ”„๋ž˜๊ทธ๋จผํŠธ์˜ ์ƒํƒœ๋ฅผ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • onDetach() : Fragment๊ฐ€ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋˜๊ธฐ ์ „์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ์—ฐ๊ฒฐ์ด ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค.

์ •๋ฆฌ

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

 

์ฐธ๊ณ 

ํ”„๋ž˜๊ทธ๋จผํŠธ ๋งŒ๋“ค๊ธฐ  |  Android Developers

[์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต์‹๋ฌธ์„œ ํŒŒํ—ค์น˜๊ธฐ] Fragment-1ํŽธ(์‚ฌ์šฉ์ด์œ /์žฅ์ /FragmentTransaction /FragmentManager )

Activity vs Fragment, ๋ฌด์—‡์„ ์„ ํƒํ•ด์•ผ ํ• ๊นŒ?