์๋ ๋งํฌ๋ก ๋์ฒด๋์์ต๋๋ค
์๋๋ก์ด๋ ๊ฐ๋
์ ์ธ ๋ถ๋ถ
์๋๋ก์ด๋ 4๋ ์ปดํฌ๋ํธ
์กํฐ๋นํฐ(Activity), ์๋น์ค(Service), ๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ(BroadCast Receiver), ์ฝํ
ํธ ํ๋ก๋ฐ์ด๋(Content Provider)
๊ฐ๊ฐ์ ์ปดํฌ๋ํธ๋ ์ธํ
ํธ๋ฅผ ํตํด ์ํธ์์ฉ
์ ํ๋ฆฌ์ผ์ด์
์ ํ์ฌ ์ํ๋ฅผ ๋ํ๋ด๊ณ ์กํฐ๋นํฐ์ ์ดํ๋ฆฌ์ผ์ด์
์ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด ์ฌ์ฉํ ์ ์์
์ ํ๋ฆฌ์ผ์ด์
context์ ์กํฐ๋นํฐ context๊ฐ ์กด์ฌ
์ ํ๋ฆฌ์ผ์ด์
์ปจํ
์คํธ(Application Context)๋?
์ฑ๊ธํด ์ธ์คํด์ค์ด๋ฉฐ ์กํฐ๋นํฐ์์ getApplicationContext()๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅ
์ ํ๋ฆฌ์ผ์ด์
๋ผ์ดํ ์ฌ์ดํด๊ณผ ์ฐ๊ฒฐ๋ผ ์์
ํ์ฌ์ ์ปจํ
์คํธ์ ๋ถ๋ฆฌ๋ ๋ผ์ดํ์ฌ์ดํด์ ๊ฐ์ง ์ปจํ
์คํธ๊ฐ ํ์ํ๊ฑฐ๋ ์กํฐ๋นํฐ์ ๋ฒ์๋ฅผ ๋์ด์ ์ปจํ
์คํธ๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉ
์กํฐ๋นํฐ ์ปจํ
์คํธ(Activity Context)๋?
์กํฐ๋นํฐ์์ ์ฌ์ฉ ๊ฐ๋ฅ
์กํฐ๋นํฐ์ ๋ผ์ดํ์ฌ์ดํด๊ณผ ์ฐ๊ฒฐ๋์ด ์์
์กํฐ๋นํฐ์ ๋ฒ์ ๋ด์์ ์ปจํ
์คํธ๋ฅผ ์ ๋ฌ ๋๋ ๋ผ์ดํ์ฌ์ดํด์ด ํ์ฌ์ ์ปจํ
์คํธ์ ๋ถ์ ์ปจํ
์คํธ๊ฐ ํ์ํ ๋ ์ฌ์ฉ
์ํ ๋ณํ๊ฐ ์์ ๋๋ง๋ค ํ๋ฉด์ ๋ณด์ด๋ ์กํฐ๋นํฐ์ ์๋ช
์ฃผ๊ธฐ ๋ฉ์๋๋ฅผ ํธ์ถํด์ ์ํ ๋ณํ๋ฅผ ์๋ ค์ค
onCreate : ๋ง๋ค์ด ์ก์ ๋
onStart : ํ๋ฉด์ ๋ํ๋ ๋
onResume : ํฌ์ปค์ค๊ฐ ๋ ๋ ํ ๋ค์ ๋์์ฌ ๋/ ํ์ฌ ํ๋ฉด์ ๋ํ๋ ์์ ๋
onPause : ํ๋ฉด์ ์ผ๋ถ๊ฐ ๊ฐ๋ ค์ง ๋
onStop : ์์ ํ ๊ฐ๋ ค์ก์ ๋
onDestroy : ์ข
๋ฃ๋์ ๋
์์กด๊ด๊ณ๋ฅผ ์ธ๋ถ์์ ๊ฒฐ์ ํ๊ณ ์ฃผ์
ํ๋ ๊ฒ
์์กด์ฑ ์ฃผ์
์ ์ฌ์ฉํ๋ ์ด์
์ฝ๋์ ์ฌํ์ฉ์ฑ์ ๋์ฌ์ค
๊ฐ์ฒด๊ฐ์ ์์กด์ฑ์ ์ค์ด๊ฑฐ๋ ์์ ์ ์์
๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๊ณ ์ ์ฐํ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
AndroidManifest.xml, Layout ํ์ผ, Resource ํ์ผ ๋ฑ ๋ค์ํ ๊ณณ์์ ์ฌ์ฉ
XML์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ํํ
Android OS๊ฐ XML์ ํ์ฑํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํํจ
Activity vs Fragment ๋น๊ต
๋ ๋ค View๋ฅผ ํํํด์ค
Activity : ๊ฐ์ฅ ๋ฐ๋ฅ ์ญํ ์ ํจ
Fragment : ์กํฐ๋นํฐ์ ๋ถ์
๋ฐํ์์ ํ๋ก๊ทธ๋จ์ ํด๋์ค๋ฅผ ์กฐ์ฌํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ ๊ธฐ์
์ปดํ์ผ ํ์, ๋ฐ ํ์ ์ด๋?
์ปดํ์ผ ํ์์ ์์ฑ๋ ์์ค์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด์ฝ๋๋ก ๋ณํ ๋์ด ์คํ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ง๋๋ ๊ณผ์
๋ฐ ํ์์ ์ปดํ์ผ๋ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉ์์ ์ํด ์คํ๋์ด ๋์ํ ๋
์ปดํ์ผ์ ์์ฑ๋ ์์ค์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด์ฝ๋๋ก ๋ณํ
๋น๋๋ ์ปดํ์ผํ ํ ์คํํ์ผ๋ก ๋ง๋๋ ๊ณผ์
Kotlin ๋ฌธ๋ฒ์ ์ธ ๋ถ๋ถ
๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ค๊ณ๋
์ค๊ณ๋(ํด๋์ค)๋ก ์ฐ์ด๋ธ ์ค์ฒด
์ด๋ค ๊ฐ์ฒด๋ฅผ ํํํจ์ ์์ด ๋ชจ๋ ๊ฒ์ ๋ค ํํํ๋ ๊ฒ์ด ์๋๋ผ ์ผ์ ๋ถ๋ถ ํน์ง๋ง์ ํํ
๋ชฉ์ ์ ์ํด ํ์ํ ๋ถ๋ถ๋ง์ ์ฐพ์ ์ ์์
๋ถ๋ณ์ฑ(Immutability)์ด๋?
๋ฌด์ธ๊ฐ๊ฐ ๋ณํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํจ
๋ถ๋ณ ๋ณ์ -> ๋ณ๊ฒฝ๋ ์ ์๋ ๋ณ์
val : ์์ ํ ๋ถ๋ณ์ฑ X
const val : ์์ ํ ๋ถ๋ณ์ฑ
Generic์ผ๋ก ๊ตฌํ์ด ๋์ด ๋ค์ํ ํ์
๊ณผ ํจ๊ป ์ฌ์ฉ๋ ์ ์์
๋ฐ์ดํฐ๋ฅผ ๋ชจ์ ๊ด๋ฆฌ์ ์ฌ์ฉ์ ํธ๋ฆฌํ๊ฒ ํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ํ๋ ์์ํฌ
๊ธฐ๋ณธ์ ์ผ๋ก Mutable(๋ณ๊ฒฝ ๊ฐ๋ฅ - ์ถ๊ฐ, ์ญ์ ๊ฐ๋ฅ)๊ณผ Immutable(๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ - ์์ ๋ถ๊ฐ๋ฅ)์ ์ง์
List vs Set vs Map ๋น๊ต
๋ชจ๋ Collection, ๋ชจ๋ Mutable๊ณผ Immutable์ ์ง์
List : ์ค๋ณต ํ์ฉO, ์์ฐจ์
Set : ์ค๋ณต ํ์ฉX, ์์ฐจ์ ์ด์ง ์์ ์งํฉ
Map : Key-Value ๋ ๊ฐ๋ก ๊ตฌ์ฑ๋ ํ์ด๋ก ๋ํ๋, key ์ค๋ณต ๋ถ๊ฐ๋ฅ, value ์ค๋ณต ๊ฐ๋ฅ
DSL์ด๋ ํน์ ๋ถ์ผ์ ์ต์ ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ปํจ
์์ฉ๊ตฌ ์ฝ๋(๋ณด์ผ๋ฌ ํ๋ ์ดํธ ์ฝ๋)๋ฅผ ์ต์ํ ํ๊ธฐ ์ํด ๋ช
๋ นํ ์ฝ๋ ๋์ ์ ์ธ์ ์ฝ๋ ํ์์ ๋ฐ๋ฆ
๊ฐ๋
์ฑ์ด ์ข๊ณ ๊ฐ๋ตํ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ Gradle ์คํฌ๋ฆฝํ
ํจ
ํจ์์ ๋ํ ์ด๋ก ์ ๊ธฐ๋ฐ์ ์ธ์ฐ๋ ์ํ์ ์ถ์ํ๋ฅผ ๋ปํจ, ์ด๊ฒ์ ํํํ๋ฉด ๋๋คํํ์
์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ http ํต์ ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
OKhttp๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง
RESP API, HTTP ํต์ ์ ๊ฐํธํ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๊ธฐ๋ฅ์ ์ ๊ณต
Retrofit์ ๋ฒ ์ด์ค๊ฐ ๋จ
Okhttp vs Retrofit ๋น๊ต
๋๋ค HTTP ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Retrofit : HTTP client ์ญํ ์ ์ํ
Okhttp : ํต์ ์ ํ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ก
Dagger์ ๋์ ๋ฌ๋์ปค๋ธ๋ฅผ ๋ณด์ํ๊ณ ์ด๊ธฐ ๊ตฌ์ถ ๋น์ฉ์ ์ ๊ฐํ๊ธฐ ์ํด ํ์ํ ์์กด์ฑ ์ฃผ์
๋ผ์ด๋ธ๋ฌ๋ฆฌ
Kotlin DSL๋ก ๋ง๋ค์ด์ง
Dagger์ ๋นํด ๋ฌ๋์ปค๋ธ๊ฐ ๋ฎ์
๋ฆฌํ๋ ์
์ ์ด์ฉํด ๋ฐํ์์ ์ค๋ธ์ ํธ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค์ฃผ๊ธฐ ๋๋ฌธ์ ์ฑ ์ฑ๋ฅ์ด ์ ํ๋จ
Native UI๋ฅผ ์ฝ๋๋ ๋ฒจ๋ก ๊ตฌํํ ์ ์๋ ์ต์ ํดํท
ํ์ํ ์์ญ์ ๋ทฐ๋ฅผ ๋ค์ ๊ทธ๋ ค์ฃผ๋ ๋ฐฉ์์ผ๋ก ์์
์ฝ๋ ๊ฐ์, ์ง๊ด์ , ๋น ๋ฅธ ๊ฐ๋ฐ ๊ณผ์ , ๊ฐ๋ ฅํ ์ฑ๋ฅ ๋ฑ์ ์ด์ ์ด ์์
xmlํ์ผ์ Data๋ฅผ ์ฐ๊ฒฐํด์ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ค
๊ธ๋ฃจ์ฝ๋(ํ๋ก๊ทธ๋จ์ ์๊ตฌ์ฌํญ ๊ตฌํ์๋ ๊ธฐ์ฌํ์ง ์์ง๋ง, ๋ณธ๋ ํธํ์ฑ์ด ์๋ ๋ถ๋ถ๋ผ๋ฆฌ ๊ฒฐํฉํ๊ธฐ ์ํด ์๋ํ๋ ์ฝ๋) ์ต์ํ
View์ ์ํธ ์์ฉํ๋ ์ฝ๋๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์๋ ๊ธฐ๋ฅ
์ด๋ฏธ์ง ๋ก๋ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ด๋ค ์ข
๋ฅ์ ์ด๋ฏธ์ง๋ผ๋ ๋น ๋ฅด๊ณ ๋ถ๋๋ฝ๊ฒ ์คํฌ๋กคํ ์ ์๊ฒ ํ๋ ๊ฒ์ด ๋ชฉ์
๋ถ์ด๊ธฐ, ๋ฆฌ์ฌ์ด์ฆ, ๋์คํ๋ ์ด์ ํจ๊ณผ์
๋ ๋ค ์ด๋ฏธ์ง ๋ก๋ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Picasso : Bitmapํฌ๋งท์ ARGB_8888๋ก ์ฌ์ฉ (ํ์ง ์ข์)
Picasso : Bitmapํฌ๋งท์ RGB_565๋ฅผ ์ฌ์ฉ (๋ฉ๋ชจ๋ฆฌ ์ฉ๋ ์ ์)
Picasso๋ 1920x1080ํฌ๊ธฐ์ ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์์ GPU์์ ์ค์๊ฐ์ผ๋ก ๋ฆฌ์ฌ์ด์ง
Glide๋ ๋ฐ๋ก 768x432ํฌ๊ธฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ธ์์ ImageView๋ก ํ ๋น ์ํค๊ธฐ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ์
ํ
์คํธ์ ์ ์ง๋ณด์๊ฐ ์ฌ์ด ์ฑ์ ๋์์ธํ ์ ์๋๋ก ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชจ์
MVVM ViewModel vs AAC ViewModel ๋น๊ต
MVVM ViewModel : View์ Model ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํด์ฃผ๊ณ ๋ฐ์ธ๋ฉ ํด์ฃผ๋ ์ญํ
AAC ViewModel : ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ณ ๋ คํ์ฌ UI ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌ
๋์์ธ ํจํด, ์ํคํ
์ฒ ๋ถ๋ถ
ํด๋น ํด๋์ค์ ํ ๊ฐ์ ์ธ์คํด์ค๋ง์ ๊ฐ๊ฒํ๊ณ ์ ์ญ ๋ฒ์์์ ์ด ์ธ์คํด์ค์ ์ ๊ทผํด ์ฌ์ฉ
MVVM ๋์์ธ ํจํด์ด๋?
๋ชจ๋ธ - ๋ทฐ - ๋ทฐ๋ชจ๋ธ ๊ฐ๊ฐ์ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋ถ๋ฆฌํ์ฌ ์ฝ๋๋ฅผ ์์ฑ
Model : ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ํ์๋ฅผ ๋ชจ๋ ํฉ์ณ Model ์ด๋ผ ๋ถ๋ฆ
View : ์ฌ์ฉ์์๊ฒ ํ๋ฉด์ผ๋ก ๋ณด์ฌ์ง๋ ๋ชจ๋ ๊ตฌ์กฐ, ๋ ์ด์์์ ์๋ฏธ
ViewModel : View ์ ์ถ์ํ๋ ํํ, View ์ ๋ณด์ฌ์ ธ์ผํ๋ ๋ฐ์ดํฐ์ ๋ช
๋ น๋ค์ ๊ฐ์ง๊ณ ์์
์๋๋ก์ด๋์์์ ์๋ฏธ
Model : Network, DB, SharedPreferences ๋ฑ ๋ค์ํ Data Source ๋ก๋ถํฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ค๋น
View : Activity, Fragment, CustomView, Dialog, Toast, Snackbar, Menu ๋ฑ์ UI ์ปดํฌ๋ํธ
ViewModel : View ์ Model ์ฌ์ด์ ๋งค๊ฐ์ฒด ์ญํ ์ ํจ
MVP ๋์์ธ ํจํด์ด๋?
๋ชจ๋ธ - ๋ทฐ - ํ๋ ์ ํฐ๋ก ๊ตฌ์ฑ
UI(View)์ ๋ก์ง(Model)์ ๋ถ๋ฆฌํ๊ณ ์๋ก ๊ฐ์ ์ํธ์์ฉ์ ๋ค๋ฅธ ๊ฐ์ฒด(Presenter)์ ๊ทธ ์ญํ ์ ์ค์ผ๋ก์จ, ์๋ก์ ์ํฅ(์์กด์ฑ)์ ์ต์ํํ๋ ๊ฒ
MVC์ ๋ค๋ฅด๊ฒ ์ฝ๋๊ฐ ๊น๋ํด์ง
Model๊ณผ View์ ๊ฒฐํฉ๋๊ฐ ๋ฎ์ ํ์ฅ์ฑ์ด ๊ฐ์ ๋จ
์ดํ๋ฆฌ์ผ์ด์
์ด ๋ณต์กํด์ง์๋ก View์ Presenter ์ฌ์ด์ ์์กด์ฑ์ด ๊ฐํด์ง๋ ๋ฌธ์ ๊ฐ ์์
Model : ํ๋ก๊ทธ๋จ ๋ด๋ถ์ ์ผ๋ก ์ฐ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ์ฒ๋ฆฌํ๋ ์ญํ (๋น์ฆ๋์ค ๋ก์ง)
View : UI๋ฅผ ๋ด๋น (Activity, Fragment ๋ฑ)
Presenter : Model๊ณผ View์ฌ์ด์ ๋งค๊ฐ์ฒด, ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ํธ์์ฉ
MVC ๋์์ธ ํจํด์ด๋?
๋ชจ๋ธ - ๋ทฐ - ์ปจํธ๋กค๋ฌ๋ก ๊ตฌ์ฑ
์ปจํธ๋กค๋ฌ์ View๋ 1:n ๊ตฌ์กฐ
์ปจํธ๋กค๋ฌ๋ View๋ฅผ ์ ํํ ๋ฟ ์ง์ ์
๋ฐ์ดํธ ํ์ง๋ ์์ (View๋ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ชจ๋ฆ)
View์ Model ์ฌ์ด์ ์์กด์ฑ์ด ๋์ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์
Model : ์ดํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์
๋๋ค.
View : UI๋ฅผ ๋ด๋น (Activity, Fragment ๋ฑ)
Controller : ์ฌ์ฉ์์ ์
๋ ฅ(Action)์ ๋ฐ๊ณ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ
์ฝ๋ฃจํด(Coroutine) ๋ถ๋ถ
์๋๋ก์ด๋์์ ๋น๋๊ธฐ์ฒ๋ฆฌ๋ฅผ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ฐ๋ ๋์ ๋นํด ๊ต์ฅํ ๊ฐ๋ฒผ์
Coroutine vs Thread ๋น๊ต
๋์์ฑ (Interleaving) ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํ ๊ธฐ์
Coroutine : ๊ฐ ์์
์ ๋ํด Object ๋ฅผ ํ ๋น/ ํ๋ก๊ทธ๋๋จธ์ ์ฝ๋ฉ์ ํตํด Switching ์์ ์ ๋ง์๋๋ก ์ ํจ/ ํ๋์ ์ค๋ ๋์์ ์ฌ๋ฌ Object๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฒผ์
Thread : ๊ฐ ์์
์ ๋ํด Thread ๋ฅผ ํ ๋น/ OS Kernel ์ ์ํ Context Switching์ ํจ/ ๊ฐ๊ฐ์ ์ค๋ ๋๋ฅผ ํ ๋นํ๊ธฐ ๋๋ฌธ์ Stack์ด ๋์ด๋ ๋ฌด๊ฑฐ์
๋๊ธฐ vs ๋น๋๊ธฐ ๋น๊ต
๋๊ธฐ : ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ง ๋๊น์ง ์๋ฌด๊ฒ๋ ๋ชปํ๊ณ ๋๊ธฐ(ํธ์ถ๋ ํจ์์ ์ํ ๊ฒฐ๊ณผ ๋ฐ ์ข
๋ฃ๋ฅผ ํธ์ถํ ํจ์๊ฐ ์ ๊ฒฝ์)
๋น๋๊ธฐ : ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ง๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋๋ผ๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ ๋์ ๋ค๋ฅธ ์์
์ ํ ์ ์์(ํธ์ถ๋ ํจ์์ ์ํ ๊ฒฐ๊ณผ ๋ฐ ์ข
๋ฃ๋ฅผ ํธ์ถ๋ ํจ์ ํผ์ ์ง์ ์ ๊ฒฝ ์ฐ๊ณ ์ฒ๋ฆฌ)
Blocking vs Non-blocking ๋น๊ต
Blocking : ํธ์ถ๋ ํจ์๊ฐ ์์ ์ด ํ ์ผ์ ๋ชจ๋ ๋ง์น ๋๊น์ง ์ ์ด๊ถ์ ๊ณ์ ๊ฐ์ง๊ณ ์๊ณ ํธ์ถํ ํจ์์๊ฒ ๋ฐ๋ก ๋๋ ค์ฃผ์ง ์์
Non-blocking : ํธ์ถ๋ ํจ์๊ฐ ์์ ์ด ํ ์ผ์ ๋ค ๋ง์น์ง ์์๋๋ผ๋ ๋ฐ๋ก ์ ์ด๊ถ์ ๊ฑด๋ค์ฃผ์ด(return) ํธ์ถํ ํจ์๊ฐ ๋ค๋ฅธ ์ผ์ ์งํํ ์ ์๋๋ก ํด
Blocking vs ๋๊ธฐ, Non-blocking vs ๋น๋๊ธฐ ๋น๊ต
์๋ก ๋น์ทํ์ง๋ง ๋ค๋ฆ(์์ ์ ๋ฆฌ๋ ๋ด์ฉ ์ฐธ๊ณ )
Main Thread ๋ฅผ Unblocking ํ ์ฑ { } ๊ตฌ๋ฌธ ๋ด ์์
์ ์ํ
launch : ๋ฐํ๊ฐ ์์
async : ๋ฐํ๊ฐ์ด ์กด์ฌ(Deferred)
์์
์ด ๋๋ ๋๊น์ง ํ์ฌ ์ฝ๋ฃจํด์๊ฒ ๊ธฐ๋ค๋ฆฌ๋ผ๊ณ ๋ช
๋ นํ๋ ํจ์
join : Job(launch) ํ์
์์ ์ฌ์ฉ
await : Deferred(async) ํ์
์์ ์ฌ์ฉ