[Android TIL] 240417 (๋‹น๊ทผ๋งˆ์ผ“ ๊ฐœ์ธ๊ณผ์ œ ๊ตฌํ˜„ ์‹œ์ž‘)
๋ฐ˜์‘ํ˜•

 

 



๐ŸŒฑ Today I Learned (์ง‘์ค‘์‹œ๊ฐ„ : 6์‹œ๊ฐ„ 0๋ถ„)

  1. (08:40 ~ 10:00 / 1์‹œ๊ฐ„ 20๋ถ„) ์ฝ”๋“œ ์ž‘์„ฑ ์ค€๋น„ ๋ฐ Git ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ• ์„œํ•‘, 
  2. (10:00 ~ 10:40 / 40๋ถ„) ๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ, ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋Œ€ํ™”
  3. (11:00 ~ 12:20 / 1์‹œ๊ฐ„ 20๋ถ„) ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ 5์ฃผ์ฐจ ๊ฐ•์˜
  4. (12:25 ~ 12:55 / 30๋ถ„) ๊ฐœ์ธ ๊ณผ์ œ ์‹œ์ž‘ : git init ๋ฐ README.md ์ž‘์„ฑ
  5. (19:00 ~ 20:30 / 1์‹œ๊ฐ„ 30๋ถ„) ๊ฐœ์ธ ๊ณผ์ œ ๊ตฌํ˜„
  6. (20:30 ~ 21:10 / 40๋ถ„) ํŒ€ ๋ฐ์ผ๋ฆฌ ํšŒ๊ณ 

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

โ€‹

๐Ÿ“… ์ด๋ฒˆ ์ฃผ ๋ชฉํ‘œ

  • [V] ์ˆ™๋ จ ๊ฐ•์˜ ๋‹ค ๋“ฃ๊ธฐ
  • [  ] ์Šคํƒ ๋‹ค๋“œ 2์ฃผ์ฐจ ์‹ฌํ™” ๊ตฌํ˜„ : ์ˆ™๋ จ ๊ฐ•์˜ ์ฒดํ™”(fragment, fragment ๊ฐ„์˜ ๋ฐ์ดํ„ฐ์ „๋‹ฌ) ํฌ๊ธฐ
  • [V] ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ๋ฐ€๋ฆฐ ๊ฐ•์˜ ๋“ฃ๊ธฐ
  • [V] ์ž…๋ฌธ ๊ฐœ์ธ ๊ณผ์ œ ํ•ด์„ค ํ•™์Šต
  • [V] ๋ฒ ์ด์ง๋ฐ˜ ๊ฐ•์˜ 4์ฃผ์ฐจ๊นŒ์ง€
  • [V] ์Šคํƒ ๋‹ค๋“œ 4์ฃผ์ฐจ ๊ณผ์ œ ๊ตฌํ˜„ 
  • [  ] ์ˆ™๋ จ ๊ฐœ์ธ ๊ณผ์ œ ํ•„์ˆ˜ ๊ตฌํ˜„ : ์ˆ™๋ จ ๊ฐ•์˜ ์ฒดํ™”(notification, dialog, recyclerview, fragment ์ข…ํ•ฉ)
  • [  ] ์ •์ฐฝ๊ฒฝ ๋‚ด์šฉ ์ •๋ฆฌ
  • [  ] ๋ฐ€๋ฆฌ์˜ ์„œ์žฌ ์•ˆ๋“œ๋กœ์ด๋“œ ์„œ์  ์ง„๋„ ๋ถ€๋ถ„๊นŒ์ง€ ๋‹ค ํ›‘๊ธฐ
  • [  ] Fragment ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๊ตฌํ˜„ํ•œ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ
  • [  ] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ง‘์ค‘ ์ฝ”๋“œ์นดํƒ€
  • [  ] ๋งํฌ ์ˆ˜๊ฐ•
  • [  ] (์‹ฌํ™”) KIA ๊ฐœ๋… ํ›‘๊ธฐ
  • [  ] (์‹ฌํ™”) Android Developer ์ฝ๊ธฐ
  • [  ] (์‹ฌํ™”) ๊ฐœ์ธํ”„๋กœ์ ํŠธ UI ๊ตฌํ˜„
  • [  ] (์‹ฌํ™”) ์ €๋ฒˆ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๋œฏ์–ด๋ณด๊ธฐ

โ€‹

 

 

 

 

1. ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ 5์ฃผ์ฐจ ๊ฐ•์˜

 

 

  • ํ•œ ๋ฒˆ์— ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•˜๋ ค๊ณ  ํ•˜์ง€ ๋ง๊ณ , ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ๊ณผ์ œ/ํ”„๋กœ์ ํŠธ์˜ ํƒœ์Šคํฌ๋ฅผ ์ž˜๊ฒŒ ์ชผ๊ฐœ์„œ ์ ์–ด๋†”๋ผ.
  • ๋ฉ€ํ‹ฐ๋ทฐ ํƒ€์ž…์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด ๊ณผ์ œ ํ”ผ๋“œ๋ฐฑ ๋ผ์ด๋ธŒ ์ฝ”๋”ฉ์„ ๋ณด์—ฌ์ฃผ์…จ๋‹ค.
  • ์•ˆ๋“œ๋กœ์ด๋“œ ์•„ํ‚คํ…์ฒ˜ ์ค‘ MVP์™€ MVVM์˜ ์ฐจ์ด (์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ: ๋งํฌ1)
  • Observer Pattern (LiveData๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•จ) : ๋ฉ๋ฉ์ด์™€ ์•ผ์˜น์ด๊ฐ€ ๊ณตํ†ต์ ์œผ๋กœ update()๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œ
  • MVC๋กœ ๊ตฌํ˜„๋œ ์ด์ „ ๊ณผ์ œ๋ฅผ MVVM์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ œ๋ฅผ ๋ฐ›์•˜๋‹ค.
    ๋ทฐ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋ž˜๋„ ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ๋ฅผ ์ฒ˜์Œ ๊ตฌํ˜„ํ•˜๋Š” ์–ด๋ ค์›€๋ณด๋‹ค๋Š” ๋œํ•˜๋‹ค๊ณ ๋“ค ํ•œ๋‹ค.

 

 

 

 

2. ๋‹น๊ทผ๋งˆ์ผ“ ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ ๊ณผ์ œ ๊ตฌํ˜„

 

 

 

[Android] ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด ๊ฐœ๋… ๋ฐ ์˜ˆ์‹œ, object, companion object

๐Ÿค” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด? ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ด ํŒจํ„ด์€ ํŠน์ • ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)๋ฅผ ์˜ค์ง ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•˜๋„๋ก ๋ณด์žฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ํด๋ž˜

limheejin.tistory.com

  • ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊บผ๋‚ด ์“ฐ๋ฉด์„œ ๊ถ๊ธˆํ•ด์ง„ ๋‚ด์šฉ์ด๋‹ค.
  • ํ—ท๊ฐˆ๋ ธ๋˜ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์˜ ๊ฐœ๋…๊ณผ, object ๋ฐ companion object์˜ ์ •ํ™•ํ•œ ์ฐจ์ด๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ •๋ฆฌํ•˜์˜€๋‹ค.

 

๐Ÿ”จ ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ ํ™”๋ฉด์ด ์ถœ๋ ฅ๋˜์ง€ ์•Š๋˜ ๋ฌธ์ œ

 

(์™ผ์ชฝ) ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ๊ฐ€ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋˜ ํ™”๋ฉด / (์˜ค๋ฅธ์ชฝ) ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ๋˜๋Š” ํ™”๋ฉด

 

ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€์˜ ์›์ธ์ด ์žˆ์—ˆ๋‹ค.

 

๐Ÿ’ก ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ : ์ดˆ๊ธฐํ™” ์˜ค๋ฅ˜

  • onCreate์—์„œ initRecyclerView()๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ itemAdapter๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์•˜๋‹ค.
    ์ด์— ๋”ฐ๋ผ, ์•ฑ์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์šด๋˜๋Š” ํ˜„์ƒ์ด ์ผ์–ด๋‚ฌ๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด itemAdapter๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ์—ˆ๋‹ค.

 

๐Ÿ’ก ๋‘ ๋ฒˆ์งธ ๋ฌธ์ œ : ์–ด๋Œ‘ํ„ฐ ์„ค์ • ์˜ค๋ฅ˜

(์™ผ์ชฝ) ์ˆ˜์ • ์ „ / (์˜ค๋ฅธ์ชฝ) ์ˆ˜์ • ํ›„

  • RecyclerView์˜ ์–ด๋Œ‘ํ„ฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๋Œ€๋กœ ์„ค์ •ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
  • ์ž˜ ๋ณด๋ฉด ItemAdapter์—์„œ๋Š” List<Item> ํƒ€์ž…์˜ itemItems๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๊ณ  ์žˆ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ ๋ฐ‘์— var items: List = listOf() ๋ฅผ ์ž‘์„ฑํ•ด๋†“๊ณ , ๊ทธ items ๋ฆฌ์ŠคํŠธ๋ฅผ onBindViewHolder์™€ getItemCount ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์ด์— ๋”ฐ๋ผ RecyclerView์˜ ์•„์ดํ…œ์ด ์ œ๋Œ€๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ƒ์„ฑ์ž์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ items๋กœ ์ˆ˜์ •ํ•˜๊ณ , ์•„๋ž˜ items ์„ ์–ธ์€ ์‚ญ์ œํ•˜์—ฌ ์ •์ƒ ์ž‘๋™์‹œ์ผฐ๋‹ค.

 

 

๐Ÿค” ์ •์„์ ์ธ ์ค‘๊ฐ„ ๊ตฌ๋ถ„์„  ๊ตฌํ˜„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ

 

 

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

 

 

 

 

 

 

๐Ÿ’ญ Retrospect

๊ฐœ์ธ ๊ณผ์ œ ๊ตฌํ˜„์„ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ๋Š” ํ‰์ผ์— ์‹œ๊ฐ„์ด ๋ชจ์ž๋ผ์„œ, ์ฃผ๋ง์— ๋” ์ง‘์ค‘ํ•  ๊ณ„ํš์ด๋‹ค.

โ€‹

 

 

 

 

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