Week4 Mentor Meeting - boostcampwm-2021/android05-boomerang GitHub Wiki

Android 05 KotlinIsGood W4 ๋ฉ˜ํ† ๋‹˜ ๋งŒ๋‚จ

Question

ViewModel null ์—๋Ÿฌ?

๊ฐ€๋” ํŠน์ •ํ•œ ๊ฒฝ์šฐ์—์„œ ๋นŒ๋“œํ•  ๋•Œ viewModel์— !!์„ ๋ถ™์—ฌ์•ผํ•œ๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋œจ๋Š”๋ฐ ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

gradle ์—๋Ÿฌ

ํŠน์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” maven์„ ์‚ฌ์šฉํ•˜์—ฌ implementation์„ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๊ฒฝ๋กœ๊ฐ€

allProject{
    repositories{
        maven{ blah blah }
    }
}

ํ˜•์‹์œผ๋กœ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๊ทผ๋ฐ ์ด๋ ‡๊ฒŒ gradle์„ ๋นŒ๋“œํ•˜๋ฉด implementation์—์„œ ์ œ๋Œ€๋กœ ๋นŒ๋“œ๊ฐ€ ์•ˆ๋˜์—ˆ๋‹ค๋Š” ์—๋Ÿฌ๋ฅผ ๋ฐœ๊ฒฌํ•˜์—ฌ setting.gradle ์—์„œ RepositoriesMode๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฐฉ์‹์„ ์‹œ๋„ํ–ˆ๋Š”๋ฐ ๋ฐ”๊พผ ๋’ค์—๋Š” ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋นŒ๋“œ ์•ˆ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์—ฌ settings.gradle์˜ repositories์— ์ง์ ‘ maven ๊ฒฝ๋กœ๋ฅผ ๋„ฃ์—ˆ๋”๋‹ˆ ์ œ๋Œ€๋กœ ๋นŒ๋“œ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ ํ•ด๋‹น ๋ฐฉ๋ฒ•์ด ์ ์ ˆํ•œ ๋Œ€์ฒ˜์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์Œ์„ฑ ์ธ์‹ ์‹œ ์ทจ์†Œ๋ฒ„ํŠผ ์ถ”๊ฐ€

์Œ์„ฑ ์ธ์‹ ์‹œ์— ๊ตฌ๊ธ€์˜ ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ๋ณด์—ฌ์ง‘๋‹ˆ๋‹ค.

์ด๋•Œ ์ทจ์†Œ๋ฅผ ์›ํ•  ๊ฒฝ์šฐ ์ทจ์†Œ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์Œ์„ฑ์ธ์‹ ๊ณผ์ •์ด ๋๋‚˜๊ฒŒ๋” ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€๋ฐ ๊ตฌ๊ธ€์ด ๋ณด์—ฌ์ฃผ๋Š” ๋‹ค์ด์–ผ๋กœ๊ทธ์ด๋‹ค๋ณด๋‹ˆ ์–ด๋–ป๊ฒŒ custom ํ•ด์•ผํ• ์ง€ ๊ฐ์ด ์˜ค์งˆ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋‘์˜ ๋ฉ”๋ชจ ์‹คํ–‰ ๊ฒฐ๊ณผ

๋ฉ”๋ชจ ์ž‘์„ฑ์‹œ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€, ์ž‘์„ฑ ํ›„ ์˜์ƒ์œผ๋กœ ๋ณ€ํ™˜๋˜์—ˆ์„ ๋•Œ ๊ฒฐ๊ณผ๋ฌผ์ด ์–ด๋Š ์ •๋„์ธ์ง€ ์•ฑ ์‚ฌ์šฉ ํ›„๊ธฐ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ์‚ฌํ•ญ

UI ๊ฐœ์„ 

  • SearchView Custom ์˜ˆ์ •

์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ• ๋ณ€๊ฒฝ

๊ธฐ์กด์—๋Š” ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์Šค๋ ˆ๋“œ ๊ฐ„์— ํ†ต์‹ ์„ ํ•˜์˜€์—ˆ๋Š”๋ฐ ์ด ๊ฒฝ์šฐ Context Switching์— ๋ฐœ์ƒ๋˜๋Š” ๋น„์šฉ์ด ํฌ๊ณ , ์‹คํ–‰ ๊ฒฐ๊ณผ ์ „๋‹ฌ ์‹œ์—๋„ ๋‹ค์‹œ UI(๋ฉ”์ธ) ์Šค๋ ˆ๋“œ์—์„œ ์ž‘๋™ํ•˜๋Š” ํ•ธ๋“ค๋Ÿฌ์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋“ฑ ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์— ๋น„ํ•ด ์ฝ”๋ฃจํ‹ด์—์„œ ์‹คํ–‰ํ•˜๋ฉด Context Switching์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋น„์šฉ์„ ์•„๋‚„ ์ˆ˜ ์žˆ๊ณ , ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜ ๋“ฑ๋„ ๋” ์‰ฌ์›Œ์ ธ์„œ ์ฝ”๋ฃจํ‹ด์œผ๋กœ Surface๋ฅผ ๊ฐ€์ ธ์™€ Buffer๋กœ ์˜ฎ๊ธฐ๋„๋ก ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋‚˜๋งŒ์˜ ๋ฉ”๋ชจ ์ž‘์„ฑ ์กฐ๊ฑด ๋ณ€๊ฒฝ

  1. ์˜์ƒ ์žฌ์ƒ ์‹œ ๋ฉ”๋ชจ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์˜์ƒ์ด ๋๋‚˜๋ฉด ๋ฉ”๋ชจ ์ž‘์„ฑ๋„ ์ข…๋ฃŒ๋œ๋‹ค.
  2. ์˜์ƒ ์ •์ง€ ์‹œ ๋ฉ”๋ชจ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์˜์ƒ ์‹œ๊ฐ„์— ๋งž๊ฒŒ ๋ฉ”๋ชจ ์ž‘์„ฑ์ด ์ข…๋ฃŒ๋œ๋‹ค.
  3. ์˜์ƒ์ด ๋๋‚˜๊ณ ๋Š” ๋ฉ”๋ชจ ์ž‘์„ฑ์„ ํ•  ์ˆ˜ ์—†๋‹ค.

๋ฉ˜ํ† ๋‹˜์˜ ๋ฏธ์…˜

์ผ์ฃผ์ผ๋™์•ˆ ๋ฉ”๋ชจ ๋‚จ๊ฒจ๋ณด๊ธฐ ๋ฏธ์…˜ - ์ดํ›„ ๊ณต์œ  - ์ œํ’ˆ์„ ๋งŒ๋“ค๊ธฐ์œ„ํ•œ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ• ์ค‘ ํšจ๊ณผ ์ตœ๊ณ