Development/Android
์ด์ Coroutine ๊ธ์ ์ด์ด ์ถ๊ฐ์ ์ผ๋ก ๊ธ์ ์ฐ๋ คํ๋ค. ์๋๋ก์ด๋์์ ์ฝ๋ฃจํด / Coroutine ์จ๋ด
์๋ค - 0 ์ฝ๋ฃจํด์ด๋! ๋ป : ์ฝ๋ฃจํด(Coroutine)์ Co- Routine์ ํฉ์ฑ์ด์ธ๋ฐ Co(์ ๋ชฐ๋ผ์ ์๋ฌธ์ฌ์ ๋งํฌ๋ฅผ ๋ค๊ณ ์๋ค) - ํ๋, ํ๋ ฅ, ํจ๊ป co- 1. together; with: 2. abbreviation for company (= business): 3. written… dictionary.cambridg taekwon-seungwon.tistory.com ์ด๋ฒ์ ๋ฐฐ์ธ ์ - build.gradle ์ถ๊ฐ - CoroutineScope - Coroutine Dispatcher - Coroutine ์ํ๊ด๋ฆฌ - WithContext ๋์คํจ์ณ ๋ถ๋ฆฌ - Coroutine ๋น๋ ..
Development
์ด๋ฒ์ ๋ฐฐ์ธ ๊ฒ - SOLID๋ - ์์น๋ณ ์์ - ๊ฒฐ๋ก SOLID๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ดํด๊ฐ ์ฌ์ด, ์ ์ฐํ, ์ ์ง๋ณด์ ๊ฐ๋ฅํ SW(Soft-Ware: ์ํํธ์จ์ด)๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์๋ ๋์ด์ง ๋์์ธ ์์น์ด๋ค. SOLID ์์น์ ์๊ตฌํ ๊ธฐ๋ฅ์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ฐ๋ฆฌ๊ฐ ํ์ฌ ์กด์ฌํ๋ ํ๋ก๊ทธ๋จ์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ถ์ ๋, ์์คํ
์ ํฐ ๋ณ๊ฒฝ ์์ด, ์ง์ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋๋ก ๋์์ค๋ค. SOLID๋ 5๊ฐ์ง ์์น์ ์ ์ผ ์ฒซ ๊ธ์๋ฅผ ๋ฐ์ ๋ง๋ค์๋ค. - S : Single Resposibility Priciple / ๋จ์ผ ์ฑ
์ ์์น - O : Open Closed Principle / ๊ฐ๋ฐฉ ํ์ ์์น - L : Liskov Substitution Principle / ๋ฆฌ์ค์ฝํ ์นํ ์์น - I : I..
Development/Android
์ด ๊ธ์์ ๋ฐฐ์ธ์ - ๋ค๋ฅธ DI์์ ์ฐจ์ด์ - Hilt์ ๊ดํ ์ ๋ฐ์ ์ธ ์ง์ - Hilt๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ - Hilt์์ ์์ฃผ ์ฌ์ฉํ๋ Annotation DI -> Dependency Inject ์์กด์ฑ ์ฃผ์
์ด๋ผ๊ณ ํ๋ค. ์ด์ ์ Koin์ ๊ดํ ๋ธ๋ก๊ทธ๋ฅผ ์์ฑ ํ์ ๋๋ ๊ณต๋ถ๋ฅผ ํ์์ง๋ง Hilt๋ฅผ ์ข ๋ ๋ง์ด ์์๋ณด๋ ค ๋ค์๊ธ ๊ธ์ ์ด๋ค. ์ด์ ์ ์ผ๋ Koin์ ๊ดํ ๋ธ๋ก๊ทธ ์์กด์ฑ ์ฃผ์
์ Koin๐ช ํ ๋ข์ - 1 ์์กด์ฑ ์ฃผ์
์ด๋ผ.. ๋๋ฌด๋๋ ์ต์ํ์ง ์์ ๋ฌธ์ฅ์ด๋ค. ๋จ์๊ฒ ์์กดํ์ง๋ง๊ณ ์ฃผ์ฒด์ ์ผ๋ก ์ด์ ๋ผ๋ ๋ง์ ์ฌ์ฉํ ๋๋ง ์ผ๋ ๋จ์ด๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ๋ ์ด์ํ๊ณ ๋จ๋ฒ์ ์ดํด๊ฐ ๋์ง ์๋๋ค. ์์กด taekwon-seungwon.tistory.com ์์กด์ฑ ์ฃผ์
์ Koin๐ช ๋ ๋ข์ - 2 ์ด๋ฒ์ ์ค์ ๋ก..
์นดํ
๊ณ ๋ฆฌ ์์
์ฝ๋ฃจํด์ด๋! ๋ป : ์ฝ๋ฃจํด(Coroutine)์ Co- Routine์ ํฉ์ฑ์ด์ธ๋ฐ Co(์ ๋ชฐ๋ผ์ ์๋ฌธ์ฌ์ ๋งํฌ๋ฅผ ๋ค๊ณ ์๋ค) - ํ๋, ํ๋ ฅ, ํจ๊ป co- 1. together; with: 2. abbreviation for company (= business): 3. written… dictionary.cambridge.org Routine - ์ผ๊ณผ ํน์ ๋ฐ๋ณต์ ์ธ ์์
(์ฐ๋ฆฌ๊ฐ ํํ ์ฐ๋ ํจ์๋ก ์๊ฐํด๋ ๊ด์ฐฎ๋ค)์ด๋ ๋ป์ผ๋ก ๋ง๋ค์ด์ง ๋จ์ด๋ก, ์์ญํด "ํ๋ ๋ฃจํด", "ํ๋ ํจ์"๋ก ํํํ๊ธฐ๋ ํฉ๋๋ค. ์ด๋ ๊ฒ Coroutine์ ๋ป์ ๊ธฐ์ตํ๋๊ฒ ์ค๋ ๊ธฐ์ต์ด ๋จ์ ๊ฒ ๊ฐ๋ค. ํ๋ ๋ฃจํด, ์ฆ Coroutine์ ํ์ฉํด์ ๋ญ ํ๋ ๊ฒ์ด๋ ๋ผ๊ณ ํ๋ฉด RxJava๋ผ๋๊ฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ผ๋๊ฐ ์๋ ๋์ค์ ์๋ฒํธ์ถ์ ๊ธฐ๋ค..
Development/Android
Databinding์ ์ฌ์ฉ ํ๊ณ ์์ด! ๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฐ๋์ง ์๊ฒ ์ด. ๊ทผ๋ฐ ์๋ฒ์์ ๋ฐ์์จ ๋ฐ์ดํฐ๋ค์ ์ด๋ป๊ฒ ๊ฐ๊ณตํด์ ๋ฐ๋ก ์จ? ์๊ฐ์ด๋ ํ์ ๋ญ ํ๋ฌผ๋ฉฐ ์ฌ์ฉ์ ์ฑ๋ณ์ด๋ผ๋ ๊ฐ๊ณตํด์ ๋ณด์ฌ์ค์ผํ๋๊ฑฐ ์๋๊ฐ? ๊ทธ๋ผ ๋ ๋ค๋ฅธ ๊ณณ์์ ์ฃผ์
ํด์ค์ผํ๋๊ฑฐ ์๋์ผ? ๋ผ๊ณ ์๊ฐํ์ง๋ง… ์~์ฃผ ์ข์ ๊ธฐ๋ฅ์ด ์๋ค.(์ด๋ฌ๋ฉด ๋ท๋ง์ด ๊ถ๊ธํด์ ๋ฒ์ด๋๊ธฐ ํ๋ค๋ค ๐คฆโ๏ธ) 1. ์ผ๋จ ์ฌ์ฉํ Data class๋ฅผ ๋ง๋ ๋ค. data class Memo( // @SerializedName("id") object ์ค ํด๋น ๊ฐ์ด null ๊ฒฝ์ฐ // -> json ์ผ๋ก ๋ง๋ค ํ๋๋ฅผ ์๋ ์๋ต @SerializedName("id") @Expose val id: Int, โ @SerializedName("title") @Expose val me..
Development/Android
์ด๋ฒ์ RecyclerView ViewPager image ๋ค์ ์ด๋ป๊ฒ ํ๋ฉด Databinding์ ์ฌ์ฉํ ์ ์๋์ง ์ ์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ณดํต RecyclerView๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Adapter ๋ฐ๋ณต๋ Layout RecyclerView๋ฅผ ์ฌ์ฉํ๋ ๊ณณ์์์ ์ ์ธ ๋ค์ด ํ์ํ๋ฐ Databinding์ ์ด์ฉํ๋ฉด ์ฝ๊ฐ์ฉ ๋ฌ๋ผ์ง๊ฒ ๋๋ค. (๊ธฐ๋ณธ์ ์ธ RecyclerView๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ ํ์ ์งํํ๊ฒ ์ต๋๋ค ๐โ๏ธ) 1. ๊ฐ์ฅ ๋จผ์ ๋ฐ๋ณตํ์ฌ ์ฌ์ฉํ Layout์ ๋ง๋ค์ด์ค๋๋ค. โ โ โ โ โ โ โ ์์ ๊ฐ์ด ๋ฐ์ธ๋ฉ์ผ๋ก ๋ฌถ์ด์ฃผ๊ณ ์ฌ์ฉํ item(data class) ๋ชจ๋ธ์ variable๋ก ์ ์ธ ํด์ค๋๋ค. ์ ์ธํ item์ผ๋ก ๊ฐ View์ ๋ฃ์ด์ค๋๋ค. (์นด์นด์ค ์ฃผ์์ฐพ๊ธฐ api๋ฅผ ์ฌ์ฉํจ ๐บ๐ผ) 2. A..
Development/Android
Databinding์ด๋!(๋ฐ์ดํฐ ๋ฌถ๊ธฐ?) → ์๋๋ก์ด๋์์์ data binding ์ด๋, Android Archictecture Components ์ ํ ๋ถ๋ถ์ผ๋ก์ Ui ์์์ ๋ฐ์ดํฐ๋ฅผ ํ๋ก๊ทธ๋จ์ ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐํ์ง ์๊ณ , ์ ์ธ์ ํ์์ผ๋ก ๊ฒฐํฉํ ์ ์๊ฒ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋งํ๋ค. ์ฝ๊ฒ ์ค๋ช
ํ๋ฉด MVVMํจํด์ ์ฌ์ฉํ๋ฉด์ Activity๋ Fragment์์ ๋ทฐ ๊ด๋ จ๋ ์ฝ๋๋ค์ ์ฌ์ฉํ์ง ์๊ณ xml ์ฝ๋์ ์ง์ด ๋ฃ๋ ๊ฒ์ ๋งํฉ๋๋ค. ์ด๊ฒ๋ค์ ViewModel์์ ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค. ๋ ๋ ๋ ํผ๋ถ์ ์๋ฟ๊ฒ ๋งํ์๋ฉด Activity๋ Fragment์์ ๋ง์ ์ฝ๋๋ค์ ์ ์ง ์๊ฒ ํจ์ผ๋ก์จ ๋ทฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ณํ์ํค๋ ์ฝ๋๋ ViewModel์์ ๊ด๋ฆฌํด์ Activity & Fragment ๋ค์ ์ฝ๋๋ ๋์ฑ ..
Development/Android
์ด๋ฒ์ ์ค์ ๋ก ํ๋ก๊ทธ๋จ์ ์์กด์ฑ ์ฃผ์
(DI)๋ฅผ ์ ์ฉ์์ผ๋ณด๋ฉด์ ์ฝ์ง์ ์ฐ์์์ ๋๊ผ๋ ์ ๊ณผ ํ์ํ ๋ถ๋ถ์ ์์ฑํ ์์ ์
๋๋ค. 1. Fragment๋ผ๋ฆฌ ViewModel์ ๊ณต์ ํ๊ณ ์ถ์ ๋! class JoinEntrepreneurFragment: Fragment() { ... private val viewModel: JoinViewModel by sharedViewModel() โ ... } โ class JoinMainFragment : SoftKeyboardImplementFragment() { ... private val viewModel: JoinViewModel by sharedViewModel() โ ... } ์์ ๊ฐ์ ํ์์ผ๋ก sharedViewModel() ๋ฅผ ์ ์ด์ค๋ค๋ฉด Fragment๊ฐ ..
Development/Android
์์กด์ฑ ์ฃผ์
์ด๋ผ.. ๋๋ฌด๋๋ ์ต์ํ์ง ์์ ๋ฌธ์ฅ์ด๋ค. ๋จ์๊ฒ ์์กดํ์ง๋ง๊ณ ์ฃผ์ฒด์ ์ผ๋ก ์ด์ ๋ผ๋ ๋ง์ ์ฌ์ฉํ ๋๋ง ์ผ๋ ๋จ์ด๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ๋ ์ด์ํ๊ณ ๋จ๋ฒ์ ์ดํด๊ฐ ๋์ง ์๋๋ค. ์์กด์ฑ ์ฃผ์
(์์กด๊ด๊ณ ์ฃผ์
)! Dependency Injection(DI) ๋ํ๋์ ์ธ์ ์
, ์์กด์ฑ์ฃผ์
์ ๋ํด ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ๊ณ ์ถ์๋ฐ ๋ญ๋ผํด์ผ๋ ์ง ๋ชจ๋ฅด๊ฒ ๋ค. → ํ์ค์ ์ ์ ํ ์ ์๊ณ , ์ ์๋ ํ์ค์ ๋ฐํ์ผ๋ก ๊ฐ์ ์ค๊ณ๋ฅผ ํ๊ฒ ํ์ฌ์ค๋๋ค.(์ญ์๋ ํ ๋ฒ์ ์ดํด๊ฐ ๋์ง ์๋๋ค.) ์ข ๋ ๊ฐ๊น๊ฒ ์ ์ํ๋ค๋ฉด, ”์์กด๋์ B๊ฐ ๋ณํ๋ฉด, ๊ทธ๊ฒ์ด A์ ์ํฅ์ ๋ฏธ์น๋ค .” - ์ด์ผ๋ฏผ, ํ ๋น์ ์คํ๋ง 3.1, ์์ด์ฝ(2012), p113 B๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ํ์์ด ๋ฐ๋๋ฉด A์ ์ํฅ์ด ๊ฐ๋ค. (์ฌ์ง : Jacob) ๐ฅ ํ์๋ฅผ ๊ฐ๋ฅด์น๋ ํ๊ถ๋..