์๋๋ก์ด๋ ์ฝํ๋ฆฐ ์ฑ ๊ฐ๋ฐ, ์ด์ ๋ ์ค์ ๐ฒ
์ค์ต์ผ๋ก ๋ฐฐ์ฐ๋
์๋๋ก์ด๋ ๊ธฐ๋ฅ ๊ตฌํ!
์๋๋ก์ด๋ ์ฝํ๋ฆฐ(Anrdroid Kotlin) ๊ธฐ๋ฅ ๊ตฌํ์ ๊ผญ ํ์ํ ์คํฌ๋ก ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณด๊ณ ์ถ์ผ์ ๊ฐ์? (ViewModel, WorkManager, Retrofit, Room, Coroutine...)
๋จ์ํ To-Do ์ฑ, ๋ปํ CRUD ์์ ๋์ !
์ฌ๋ฏธ์๋ ์ฝ์ธ ๊ฐ๊ฒฉ ๋ชจ๋ํฐ๋ง ์ฑ ์์ ๋ฅผ ๋ง๋ค์ด๋ณด๋ฉฐ ๋ค์ํ ๊ธฐ์ ์ ์ง์ ์ค์ตํด๋ด
์๋ค.
๐ฐ ์ฝ์ธ ๊ฐ๊ฒฉ ๋ชจ๋ํฐ๋ง ์ฑ ์ง์ ๊ตฌํํ๊ธฐ

Splash Screen API & Lottie๋ฅผ ์ด์ฉํ ์ธํธ๋ก ํ๋ฉด ๊ตฌํํ๊ธฐ
Navigation๊ณผ Lottie, DataStore๋ฅผ ์ด์ฉํด ํน์์๋ ํ๋ฉด์ ๊ตฌํํฉ๋๋ค.

Room๊ณผ Coroutine Flow๋ฅผ ์ด์ฉํ DB ๋ณ๊ฒฝ์ฌํญ ๊ฐ์ง
๋ก์ปฌ DB์ ์ ์ฅ๋ [๊ด์ฌ์๋ ์ฝ์ธ / ๊ด์ฌ์๋ ์ฝ์ธ] ๋ฐ์ดํฐ์ ์ค์๊ฐ ๋ณ๊ฒฝ์ฌํญ์ ๊ฐ์งํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋๋ค.

WorkManager๋ก Background์์ ๊ด์ฌ์ฝ์ธ ์ ๋ณด ์์ง
Background์์ API๋ฅผ ํธ์ถํด ์ฌ์ฉ์๊ฐ ๊ด์ฌ์์ดํ ์ฝ์ธ ๊ฐ๊ฒฉ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ , ํ์ฌ ๋ฐ์ดํฐ์ ์ด์ ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํด ์ฝ์ธ ๊ฐ๊ฒฉ์ด ์ฌ๋๋์ง ๋ด๋ ธ๋์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.

Foreground Service๋ก ํญ์ ๋ ์๋ Notification ๋ง๋ค๊ธฐ
์ฝ์ธ ๊ฐ๊ฒฉ ๋ณ๋ ์ ๋ณด๋ฅผ ์ฌ์ฉ์์๊ฒ ์๋ฆผ ํํ๋ก ํญ์ ๋์์ฃผ๋ UI๋ฅผ ๊ตฌํํด ๋ด
๋๋ค.
์ด ๊ฐ์, ์ด๋ฐ ๋ถ๋ค๊ป ๊ฐ์ฅ ๋์์ด ๋ฉ๋๋ค ๐โโ๏ธ
- ์ค์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์์ฉํ ์ฑ๋ค์ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ถ์ ๋ถ
- Retrofit, Room, WorkManager, Foreground Service, BootReceiver ๋ฑ์ ์ด์ฉํด ํ๋ก์ ํธ๋ฅผ ์งํํด๋ณด๊ณ ์ถ์ ๋ถ
- ๋งค๋ฒ ๊ธฐ์ด ์์ค์ ์ฑ ์ ์ ์์ ์ ์ง์น ๋ถ๋ค
์ด๋ฐ ๋ถ๋ค์ ์๊ฐ์ด ๋์๋์ง ์์ต๋๋ค ๐
โโ๏ธ
- ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ์ด ์ฒ์์ด์ ๋ถ
- ๊ฒ์์ ํตํด ๋ชจ๋ฅด๋ ๊ฒ์ ์ฐพ์ ์ ์๋ ๋ถ๋ค
- ์๊ฒฉํ ๋์์ธ ํจํด M(Model) - V(View) - X(Whatever) ์ ์ ์ฉ์ ์ํ์๋ ๋ถ๋ค (๋๋ถ๋ถ ๋ผ์ด๋ธ ์ฝ๋ฉ ํ์์ด๋ผ ์๊ฒฉํ๊ฒ ํน์ ๋์์ธ ํจํด์ ๋ฐ๋ผ ๊ฐ๋ฐํ์ง ์์ต๋๋ค.)
ํต์ฌ๋ง ๋น ๋ฅด๊ฒ,
๋ผ์ด๋ธ๋ก ๋ ์์ํ๊ฒ
๐ก ์ค์ ๊ฐ๊ฐ์ ์ตํ๋ 200% ์ค์ตํ ๊ฐ์
์ค์ต ์์ฃผ๋ก ๊ตฌ์ฑ๋, ๋ผ์ด๋ธ ์ฝ๋ฉ ์ค์ฌ์ ๊ฐ์์
๋๋ค. ๋ฐ๋ณต๋๋ ๋ถ๋ถ์ ๊ณผ๊ฐํ ์๋ตํ๊ณ ๋น ๋ฅด๊ฒ ๊ธฐ์ ๊ตฌํ์ ์งํํฉ๋๋ค. ์ฌ์ฉํ๋ ๊ธฐ์ ์ ๋ํด ์ด๋ก ์ ์์ธํ๊ฒ ๋ค๋ฃจ๊ธฐ๋ณด๋ค๋, ๋๋ต์ ์ธ ๊ธฐ์ ์ ๋ํ ํต์ฌ ๊ฐ์๋ง ์ธ๊ธํ ๋ค์ โ์ง์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒโ ์์ฃผ๋ก ์์
์ ์งํํฉ๋๋ค. ๊ฐ๋จํ ๋ ์ด์์(XML) ์ฝ๋ฉ ๋ฐ ๋ํ๋์(Dependency) ์ถ๊ฐ ์ญ์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํตํด ์๊ฐ์ ์ ์ฝํฉ๋๋ค.
์ด๋ก ์ ๋ํด ๋ณด๋ค ์์ธํ ์ค๋ช
ํ ๊ฐ์๋ฅผ ์ฐพ์ผ์ ๋ค๋ฉด ์๋ ๊ฐ์๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
์น์
1 - ์ธํธ๋ก ํ๋ฉด ์ ์
Android Splash Screen / Lottie / Jetpack Navigation์ ์ด์ฉํด ์ฌ์ฉ์์๊ฒ ์ฑ์ ์๊ฐํ๋ ์ธํธ๋ก ํ๋ฉด์ ์ ์ํฉ๋๋ค.
์น์
2 - ๋ฉ์ธ ํ๋ฉด์ผ๋ก ๋์ด๊ฐ๊ธฐ ์ํ ์ค๋น
DataStore / Room์ ์ด์ฉํ์ฌ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ก์ปฌ DB์ ์ ์ฅํฉ๋๋ค.
์น์
3 - ๋ฉ์ธํ๋ฉด ๊พธ๋ฏธ๊ธฐ (๊ด์ฌ์๋ ์ฝ์ธ ๋ฆฌ์คํธ)
BottomNavigation / Room / LiveData / Fragment / Coroutine / ViewModel ์ ์ด์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๋ณด๋ ๋ฉ์ธ ํ๋ฉด์ ๊ตฌ์ฑํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ํ๋ ์ฝ์ธ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ํด์งํ ์ ์์ต๋๋ค.
์น์
4 - ๋ฉ์ธํ๋ฉด ๊พธ๋ฏธ๊ธฐ (๊ด์ฌ์๋ ์ฝ์ธ ๊ฐ๊ฒฉ)
WorkManager / Retrofit / Room 3๊ฐ์ง๋ฅผ ์ด์ฉํด ์ฌ์ฉ์๊ฐ ๊ด์ฌ์๋ ์ฝ์ธ ๊ฐ๊ฒฉ ์ ๋ณด๋ฅผ ๋ก์ปฌ DB์ ์ ์ฅํฉ๋๋ค. ์ด๋ ๊ฒ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฌ ๋ฐ์ดํฐ์ ๋น๊ตํด ์ฝ์ธ ๊ฐ๊ฒฉ์ด ์ฌ๋๋์ง ๋ด๋ ธ๋์ง๋ฅผ ์๋ ค์ค๋๋ค.
์น์
5 - Service / Receiver ์ ์ฉ
Foreground Service ๋ฐ Reciever๋ฅผ ์ด์ฉํด ์ฌ์ฉ์์๊ฒ ์ฝ์ธ ๊ฐ๊ฒฉ ์ ๋ณด๋ฅผ ์๋ฆผ ํํ๋ก ์ ๊ณตํฉ๋๋ค. ๋ํ, BootReceiver๋ฅผ ์ด์ฉํด ๋๋ฐ์ด์ค๋ฅผ ์ฌ์คํํ์ ๋ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํฉ๋๋ค.
์ด ๊ฐ์๋ฅผ ๋ง๋
์ง์๊ณต์ ์๋ ๐จโ๐ป
๊ฐ๋ณต์น๊ฐ๋ฐ์
2015๋
์คํํธ์
์ฐฝ์
์ ๊ณ๊ธฐ๋ก ๋ค์ํ ๊ฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์งํํ์์ต๋๋ค.
ํ์ฌ๋ ํํ
ํฌ ํ์ฌ์์ ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ์ ํ๊ณ ์์ต๋๋ค.
Q&A ๐ฌ
Q. ์ ์ ์ง์์ด ํ์ํ ๊น์?
์ฝํ๋ฆฐ๊ณผ ์๋๋ก์ด๋์ ๋ํ ๊ธฐ๋ณธ ์ง์์ด ํ์ํฉ๋๋ค.
์๋ฌ๋ฅผ ๋ง๋๊ฑฐ๋ ๋ชจ๋ฅด๋ ๊ฒ์ ๋ง๋ฌ์ ๋, ๊ตฌ๊ธ๋ง์ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ๋ชจ๋ฅด๋ ๊ฒ์ ์ดํดํ ์ ์๋ ๋ถ์ด ๊ฐ์ธํ๋ก์ ํธ ์ ์ ์๊ฐํด๋ณด์๋ฉด ๊ฐ์ฅ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
Q. ๊ฐ์์ ์ฐ์ธ ์์ค์ฝ๋์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๋์?
ํ๋์ ์น์
์ด ๋๋ ๋๋ง๋ค ์์ฑ๋ ์ฝ๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋ฌ๊ฐ ๋๋ค๋ฉด ์์ฑ ์ฝ๋์ ๋น๊ตํด๋ณด์ธ์.
(์์ค์ฝ๋๋ ๊ฐ์ ์์ ์ค๋ฅธ์ชฝ ๊ตฌ๋ฆ ๋ชจ์์ ํด๋ฆญํ์๋ฉด ๋ค์ด๋ฐ์ ์ ์์ต๋๋ค.)
Q. XML ์ฝ๋ฉ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ฐ์์์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ์ด ๋ถ๋ถ๋ง ๋ชจ์์ ์ ๊ณต๋๋ ์ฝ๋๊ฐ ์์์ผ๋ฉด ์ข๊ฒ ์ด์.
์น์
0. 2๋ฒ์งธ ์์
[๊ฐ์์ ์ฐ์ธ ์ด๋ฏธ์ง / ๋ ์ด์์ ํ์ผ] ์์ ๋ค์ด๋ฐ์ผ์ค ์ ์์ต๋๋ค.
Q. ์๊ฐ ์ ์๋ฌ๋ฅผ ๋ง๋์ ์๊ฐํ์ง ๋ชปํ ์จ๋ผ์ธ ๊ฐ์๊ฐ ๋ง์์. ์ด ๊ฐ์๋ ๋ค๋ฅผ๊น์?
๋๊น์ง ์๊ฐํ์ค ์ ์๋๋ก [์ปค๋ฎค๋ํฐ]์ ์ง๋ฌธ์ ๋จ๊ฒจ์ฃผ์๋ฉด ๋์๋๋ฆด ์ ์์ต๋๋ค. ์๋ ์ ๋ณด๋ฅผ ํจ๊ป ์ ์ด์ฃผ์ธ์.
1) ์์
์ด๋ค ๋ถ๋ถ์ ์๊ฐ ์ค์ธ์ง
2) ๋ด๊ฐ ์ด๋ค ๊ฒ์ ์๋ํด๋ดค๋์ง
3) ์ด๋ค ์๋ฌ๋ฉ์์ง๊ฐ ๋์ค๋์ง