๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค (ex.SQLite) SharedPreferences : Key-Value ํํ SharedPreferences ์ ์ฅํ๋ ค๋ ํค-๊ฐ collection์ด ์์ ๊ฒฝ์ฐ SharedPreferencesf๋ฅผ ์ด์ฉํ๋ค. Handler ์๋ก์ด ๊ณต์ ํ๊ฒฝ์ค
Flow : ์์ฐจ์ ์ผ๋ก ๊ฐ์ ๋ฐฐ์ถํ๋ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ suspend ํจ์๋ 1๊ฐ์ ๊ฐ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋น๋๊ธฐ๋ก ์ฌ๋ฌ๊ฐ์ ๊ฐ์ ๊ณ์ฐํ์ฌ์ผ ํ ๋ Flow๋ฅผ ์ฌ์ฉํ๋ค. ์ฝ๋ฃจํด์ ๊ธฐ๋ฐ์ผ๋ก ๋น๋๋๋ฉฐ, CoroutineScope์์์ ๋์ํ๋ค. suspend ๊ฐ๋ฅํ
Navigaton์ Argument์ธ Safe Args๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด๋ณด์! 1. ์์กด์ฑ ์ถ๊ฐ ํ๋ก์ ํธ์ Build.gradle id 'androidx.navigation.safeargs.kotlin' version '2.5.3' apply false app
Room ๋ผ์ด๋ธ๋ฌ๋ฆฌ : SQLite์ ์ถ์ํ ๋ ์ด์ด๋ฅผ ์ ๊ณตํ์ฌ SQLite๋ฅผ ์๋ฒฝํ ํ์ฉํ๋ฉด์ ๋ ๊ฒฌ๊ณ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ก์ธ์ค๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฑ์ ์คํํ๋ ๊ธฐ๊ธฐ์์ ์ฑ ๋ฐ์ดํฐ์ ์บ์๋ฅผ ๋ง๋ค ์ ์๊ณ , ์ฑ์ ๋จ์ผ ์ ๋ณด ์์ค๋ก ์ ๊ณต๋๋ ์ด ์บ์๋ฅผ
Activity๋ก data๋ฅผ ์ ๋ฌํ๋ ๊ฒฝ์ฐ Intent๋ฅผ ์ฌ์ฉ ๋จผ์ ์ ๋ฌํ ๊ธฐ๋ณธ ๋ฆฌ์คํธ๋ฅผ ์์ฑํด์ค๋ค. Intent ์์ฑ ์ context๋ this๋ก ๋ฐ์์ฃผ๊ณ , ์ด๋ํ ์กํฐ๋นํฐ๋ฅผ ์ง์ ํ๋ค. Activity -> Activity Fragment -> Activ
Adapter๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ๋ ์ด์์์ ์ง์ ์ฐ๊ฒฐํด์ฃผ๋ ํด๋์ค์ด๋ค.ListAdapter๋ DiffUtil์ ์ด์ฉํ์ฌ ๋ฆฌ์คํธ๋ฅผ ์ ๋ฐ์ดํธํ๋ ์ด๋ํฐ์ด๋ค.getCurrentList() : ํ์ฌ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๋ค.onCurrentListChanged() : ๋ฆฌ์คํธ๊ฐ ์ ๋ฐ์ด
์๋๋ก์ด๋๋ฅผ ๊ตฌ์ฑํ๋ 4๋ Component๋ฅผ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด์.Activity : ํ๋ฉด๊ตฌ์ฑService : ํ๋ฉด์ด ์๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ฉ์ดBroadcast Receiver : ์ฑ ๋๋ ๊ธฐ๊ธฐ๊ฐ ๋ฐ์กํ๋ ๋ฐฉ์ก ์์ Content Provider : ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ
๋น๋๊ธฐ๋ผ๋ฉด ๋ง์ด ์ ํ์ AsyncTask, ์ฝ๋ฃจํด, Rxjava๊ฐ ์๋๋ฐ, ์ค๋์ Coroutine ์ ๋ํ์ฌ ์์๋ณด์!๊ตฌ๊ธ์์ AsyncTask๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฑ์ ๋ฌธ์ ๋ก deprecated๋์ด์ ์ฝ๋ฃจํด์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค๊ณ ํ๋ค.ํน์ง1\. Heap ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต
Retrofit2 DTO moshi Lifecycle couroutine Livedata Glide navigation viewModel ListAdpater RecyclerView Kakao Developers > Daum๊ฒ์ > ์ฑ ๊ฒ์ REST API https
: ์ ์ธ์ ํ์์ผ๋ก ๋ ์ด์์์ UI ๊ตฌ์ฑ์์๋ฅผ ์ฑ์ ๋ฐ์ดํฐ ์์ค์ ๊ฒฐํฉํ ์ ์๋ ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฆ, xmlํ์ผ์ data๋ฅผ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ๋ ๊ฒ๐ ๋ง์ UI ํ๋ ์์ํฌ ํธ์ถ์ ์ญ์ ํ ์ ์์ด ํ์ผ์ด ๋์ฑ ๋จ์ํ๋๊ณ ์ ์ง๊ด๋ฆฌ๊ฐ ์ฌ์์ง๐ ์ฑ ์ฑ๋ฅ์ด ํฅ์๋๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ๋
๊ด์ฐฐ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ํ๋ ํด๋์ค๊ด์ฐฐ ๊ฐ๋ฅํ ์ผ๋ฐ ํด๋์ค์ ๋ฌ๋ฆฌ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ธ์์๋ช ์ฃผ๊ธฐ ์ธ์์ ํตํด ํ๋ ์๋ช ์ฃผ๊ธฐ ์ํ์ ์๋ ์ฑ ๊ตฌ์ฑ์์ ๊ด์ฐฐ์๋ง ์ ๋ฐ์ดํธ์ฆ, ์๋ช ์ฃผ๊ธฐ๋ฅผ ๋ฐ์ํ๋ฉด์ ๊ฐ์ ๋ณ๊ฒฝ์ ๊ฐ์งํ๋ ๋ฐ์ดํฐ ํ๋UI์ ๋ฐ์ดํฐ ์ํ์ ์ผ์น ๋ณด์ฅ์ฑ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋
OS๊ฐ ์ค์น๋ ์์ญ์ผ๋ก ์ ์ ๊ฐ ์ ๊ทผํ ์ ์๋ ์์คํ ์์ญ์ฑ์ด ์ฌ์ฉํ๋ ์ ๋ณด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ฅ๋จ์ปดํจํฐ์ ๊ธฐ๊ธฐ๋ฅผ ์ฐ๊ฒฐํ๋ฉด ์ ์ฅ์๋ก ์ธ์์ ์ ๊ฐ ์ฌ์ฉํ๋ ์์ญ์ฌ์ง๊ณผ ๋์์์ ์ธ๋ถ์ ์ฅ์์ ์ ์ฅ๋จํ๋ก๋ฐ์ด์ ๋ฅผ ์ฌ์ฉํด ์ฌ์ง ์ ๋ณด๋ฅผ ์ป์ผ๋ ค๋ฉดcontentResolver ๊ฐ์ฒด๋ฅผ ์ด์ฉ
: ํน์ ์ปดํฌ๋ํธ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฃ์ด์ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ์คํํ๊ณ , ์คํ๋๋ ์ปดํฌ๋ํธ์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ.์๋๊ฐ ๋ช ํํ ๋ ์ฌ์ฉํธ์ถํ ๋์์ด ํ์คํ์ฌ, ์กํฐ๋นํฐ๊ฐ ๋ช ํํ๊ฒ ์คํ๋์ด์ผํ ๊ฒฝ์ฐPackage์ Class๋ช ์ ์ ํํ๊ฒ ๋ช ์ํธ์ถํ ๋์์ด ๋ช ํํ์ง ์์
Activity-lifecycle ํ๋ ์๋ช ์ฃผ๊ธฐ์ ๊ดํ ์ดํด onCreate() โฌ๏ธ background ๋ก ๋ฐ๋ ค๋ ๋ onPause() โฌ๏ธ ํ๋์ด ์ฌ์ฉ์์๊ฒ ํ์๋์ง ์์ ๋ onStop() โฌ๏ธ app ์ข ๋ฃ onDestory() kotlin-a
: ์๋๋ก์ด๋ ์ฑ ์ํคํ ์ฒ(Android App Architecture)JetpackLivedata๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ทฐ์ ์๋ฆฌ๋ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ๋น๋ํฉ๋๋ค.ViewModel์ ์ฑ ํ์ ์ ์ ๊ฑฐ๋์ง ์๋ UI ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.Room์ SQ
AAA : ์๋๋ก์ด๋ ์ฑ ์ํคํ ์ฒ(Android App Architecture) ๋์์ธํจํด MVC -> MVP -> MVVM MVC Model View Controller Model ๊ณผ View ์์ ํ ๋ถ๋ฆฌ, Model ํ ์คํธ ์ฌ์ Controller๊ฐ ์๋๋ก
kotlin-android-extensions์ ์ฌ์ฉํ๋ฉด ๐ findViewByIdํจ์ ์๋ต๊ฐ๋ฅ ๐ ์ฌ๋ฌ xml์์ id๋์ผํ ๊ฒฝ์ฐ ์ฝ๋๊ฐ ํท๊ฐ๋ ค์ง ๊ทธ๋์ 4.1๋ถํฐ ์ง์์ค๋จํ๊ณ ๋ทฐ ๋ฐ์ธ๋ฉ ์ฌ์ฉํ๋๋ก ๋ฐํ !! ViewBinding ๊ฐ๊ฐ xml ๋ง๋ค Vi
์ฐธ๊ณ Activity๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋๋ ๊ฒ๋ณด๋ค ํ๋์ Activity์ ์ฌ๋ฌ ๊ฐ์ Fragment๋ก ๋ง๋ค๋ฉด ์ข์ ์ ๐ ํ๋ฉด์ ํ navigation์ด ์ฒ๋ฆฌํด์ค์ ํธ๋ฆฌํ๋ค. [Android developer ์ฌ์ดํธ ์ฐธ๊ณ ] (https://developer.an