[Android TIL] 240331 (์•กํ‹ฐ๋น„ํ‹ฐ์™€ ํ”„๋ž˜๊ทธ๋จผํŠธ ๋ผ์ดํ”„์‚ฌ์ดํด, ์Šคํƒ, ๋ฐ์ดํ„ฐ ์ „๋‹ฌ๋ฐฉ์‹, UI๊ณผ์ œ ์ƒ์„ฑ)
๋ฐ˜์‘ํ˜•

 

 

 

 

 

๐ŸŒฑ Today I Learned

  1. (12:20 ~ 14:00 / 1์‹œ๊ฐ„ 40๋ถ„) Activity Lifecycle, Activity Stack ํ•™์Šต
  2. (17:30 ~ 18:40 / 1์‹œ๊ฐ„ 10๋ถ„) Fragment LifeCycle, Fragment ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ์‹ ํ•™์Šต
  3. (12:00 ~ 12:15 / 15๋ถ„) TIL ์ž‘์„ฑ ๋ฐ ๋ฐฐ์šด ๋‚ด์šฉ ํšŒ๊ณ 
  4. (02:00 ~ 02:50 / 50๋ถ„) ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์‹ฌํ™” UI ์ˆ˜ํ–‰ - fragment, recyclerView ์ด์šฉ
  5. ํ‚ค์˜ค์Šคํฌ ํ•™์Šต
  6. ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ๊นŒ์ง€ ์˜ˆ์Šต
  7. ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์‹ฌํ™”๊ณผ์ œ ์ˆ˜ํ–‰
  8. ์—ฌ์ฐฝ๊ฒฝ ๊ฐ•์˜

*** ์ ์‹ฌ 13:00 ~ 14:00 / ์ €๋… 18:00 ~ 19:00 ์ œ์™ธ

โ€‹

 

 

 

1. Activity Lifecycle, Activity Stack ํ•™์Šต

 

 

[Android ๊ธฐ์ดˆ] 6. ์•ˆ๋“œ๋กœ์ด๋“œ 4๋Œ€ ์ปดํฌ๋„ŒํŠธ, Activity, Activity Lifecycle, Activity Stack

์•ˆ๋“œ๋กœ์ด๋“œ 4๋Œ€ ์ปดํฌ๋„ŒํŠธ(Component) ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ฃผ๋กœ ๋„ค ๊ฐ€์ง€ ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ ์ด๋“ค์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ , ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ๊ณผ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š”์ง€๋ฅผ ๊ฒฐ

limheejin.tistory.com

 

  • ์•กํ‹ฐ๋น„ํ‹ฐ ๋ผ์ดํ”„์‚ฌ์ดํด์—์„œ ์ƒํ™ฉ๋ณ„๋กœ ์–ด๋–ค ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹์€์ง€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…,
    ๋ผ์ดํ”„์‚ฌ์ดํด ์† ํ”„๋กœ์„ธ์Šค์—๊ฒŒ killed ๋˜๋Š” ์ƒํ™ฉ ๋“ฑ์„ ๊ธฐ์กด ๊ธ€์— ๋ณด๋‹ค ์ƒ์„ธํžˆ ๋ณด์™„ํ•˜์—ฌ ์ •๋ฆฌํ–ˆ๋‹ค.
  • ์•กํ‹ฐ๋น„ํ‹ฐ ์Šคํƒ์˜ ๊ฐœ๋…๊ณผ ํ”„๋กœ์„ธ์Šค์™€์˜ ์ฐจ์ด,
    ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ ํ˜น์€ ์ธํ…ํŠธ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์Šคํƒ์˜ ๋Ÿฐ์น˜๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฒ• ๋“ฑ์„ ์ƒˆ๋กœ ์ •๋ฆฌํ•˜์˜€๋‹ค.
  • ์Šคํƒ์˜ ๋Ÿฐ์น˜ ๋ชจ๋“œ๋Š” ์›ฌ๋งŒํ•˜๋ฉด ๊ฑด๋“ค๋ฉด ์•ˆ ๋˜๋Š” ๋ถ„์•ผ๋ผ ๊ฐœ๋…๋งŒ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜์˜€๋‹ค.

 

 

 

 

 

2. Fragment LifeCycle, Fragment ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ์‹ ํ•™์Šต

 

 

[Android ๊ธฐ์ดˆ] 7. Fragment ๊ฐœ๋…, Fragment ์ƒ๋ช… ์ฃผ๊ธฐ, ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ์‹

1. Fragment๋ž€? ํ”„๋ž˜๊ทธ๋จผํŠธ | Android ๊ฐœ๋ฐœ์ž | Android Developers ์ด ํŽ˜์ด์ง€๋Š” Cloud Translation API๋ฅผ ํ†ตํ•ด ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ž˜๊ทธ๋จผํŠธ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ 

limheejin.tistory.com

 

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

 

 

 

 

3. ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์‹ฌํ™” UI ์ˆ˜ํ–‰ - fragment, recyclerView ์ด์šฉ

 

 

๐Ÿ’กNestedScrollView

  • NestedScrollView์— ๋Œ€ํ•ด์„œ ์ฒ˜์Œ ์•Œ์•˜๋‹ค. ScrollView์™€ ๊ฑฐ์˜ 99% ๋˜‘๊ฐ™์€ ๊ฑฐ์ง€๋งŒ, ์Šคํฌ๋กค๋ทฐ๋Š” ์•ˆ์— ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์ด์ƒํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ (๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ๋งŒ ์Šคํฌ๋กค ๋˜๋‹ค๊ฐ€ ๋‹ค ๋˜๋ฉด ๊ทธ์ œ์„œ์•ผ ์Šคํฌ๋กค๋ทฐ๊ฐ€ ์Šคํฌ๋กค)  ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค. ๋ฐ˜๋ฉด, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด NestedScrollView๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๋ทฐ๊ฐ€ ํ•จ๊ป˜ ์Šคํฌ๋กค ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.
  • ์•„์˜ˆ ๋˜‘๊ฐ™์€๋ฐ ์žฅ์ ๋งŒ ์ƒ๊ธด ๊ฑฐ๋‹ˆ NestedScrollView๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋  ๋“ฏ ํ•˜๋‹ค. appcompat button์˜ ๋Š๋‚Œ๊ณผ ๋น„์Šทํ•˜๋‹ค.
  • NestedScrollView๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ์•ˆ์— ์žˆ๋Š” RecyclerView์˜ nestedScrollingEnabled ๊ฐ’์„ false๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • ๋‹ค๋งŒ, ์ด๋ ‡๊ฒŒ NestedScrollView์™€ ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋น„ํšจ์œจ์ ์ผ ๋•Œ๋„ ์žˆ๋‹ค. ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ์˜ ์•„์ดํ…œ์ด ๋งŽ์€ ๊ฒฝ์šฐ์—” ํšจ์œจ์ด ๋–จ์–ด์ง€๋‹ˆ, ์ฐจ๋ผ๋ฆฌ ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ์—์„œ ViewHolder๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒŒ ๋‚ซ๋‹ค.
  • ์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ: https://velog.io/@kimbsu00/Android-7

 

๐Ÿ’กFragment ์ƒ์„ฑ ๋ฐ ์—ฐ๊ฒฐ

  • Fragment๋งˆ๋‹ค ์ฝ”ํ‹€๋ฆฐ ํด๋ž˜์Šค ํŒŒ์ผ๊ณผ xml ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ๊ฐ™๋‹ค.
  • : Fragment()๋กœ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•ด์ฃผ๊ณ , ํ”„๋ž˜๊ทธ๋จผํŠธ ์ƒ๋ช…์ฃผ๊ธฐ์ธ onCreateView๋ฅผ ๋งŒ๋“ค์–ด inflate๋กœ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค.
  • ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ๋ณ„ ๋‹ค๋ฅผ ๋ฐ” ์—†์–ด์„œ ์ด ๋ถ€๋ถ„์€ ๊ฐ„๋‹จํžˆ ๋„˜์–ด๊ฐ”๋‹ค.

 

์˜ค๋Š˜์€ ๊ธฐ๋ณธ์ ์ธ ํ‹€๋งŒ ๊ตฌํ˜„ํ–ˆ๋‹ค.
๋‚ด์ผ๋ถ€ํ„ฐ ์ž์„ธํ•œ UI๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๊ณ ๋ฏผํ•˜๊ณ , ๊ฐ์ข… ๋ทฐ๋ฅผ ์—ฐ๊ฒฐ์ง“๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ด๋‹ค.

 

 

 

 

 

๐Ÿ’ญ Retrospect

 

๋‚ด์ผ ์ €๋…์— ์ž ๊น ์™ธ์ถœํ•  ์ผ์ด ์žˆ์–ด ์˜ค๋Š˜์€ ์ฃผ๋ง์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ณต๋ถ€๋ฅผ ํ–ˆ๋‹ค. ์—ญ์‹œ ๊ณต๋ถ€๋Š” ์žฌ๋ฐŒ๋‹ค. ์ฒซ ์ทจ์—…์„ ํ•˜๋˜ ์‹œ๊ธฐ์—๋„, ์ด์ง์„ ํ•˜๋˜ ์‹œ๊ธฐ์—๋„ ์–ด๋–ค ๊ณต๋ถ€๋“  ํ•ญ์ƒ ์žฌ๋ฐŒ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ณต๋ถ€ ์ž์ฒด๊ฐ€ ์ง์—…์ผ ์ˆœ ์—†์„๊นŒ?

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

๊ฐœ์ธ์ ์ธ ์š•์‹ฌ๊ณผ ์ปค๋ฆฌ์–ด ๋ชฉํ‘œ ์‚ฌ์ด์—์„œ ์ž˜ ์ €์šธ์งˆ ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜„๋ช…ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ๊ฐ€์ง€์ž.

โ€‹

 

 

 

 

๋ฐ˜์‘ํ˜•
 ๐Ÿ’ฌ C O M M E N T