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/Compose
๋์์ธ QA๋ฅผ ํ๋์ค ์์คํ
์ค์ ์์ ๊ธ์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ์ ๋ ์์คํ
์ค์ ๊ฐ์ ๋ฐ๋ผ๊ฐ์ง ์๊ณ ๋ชจ๋ ๊ธฐ๊ธฐ ๋๊ฐ์ด ๋
ธ์ถํด๋ฌ๋ผ. Compose์์ Text์ fontSize๋ฅผ sp๋ก ์ง์ ํ๊ฒ ๋๋ฉด ์์คํ
์ค์ ์ ๋ฐ๋ผ๊ฐ๊ฒ ๋๊ณ dp๋ก ์ค์ ํด์ผ๋ง ์ ๋๊ฐ์ผ๋ก ์ ์ง๋๋ ๊ฒ์ ์์๋ค. ๊ทผ๋ฐ TextStyle๋ก ๋ชจ๋ ๊ณ ์ ์์ผ์ style์ ์ง์ ํด์ฃผ๊ณ ์๋ ๋ dp๋ก ์ค์ ํ๋ ค๊ณ ๋๋ฆฌ๋ฅผ ์น๋ค ๊ฒฐ๊ตญ ์๋์ ๊ฐ์ด ์ค์ ํ๊ฒ ๋๋ค. ์ด๋ฒ์ ๋ฐฐ์ด ๊ฒ! 1. Compose์์๋ fontSize๋ฅผ ์ ํ ๋ sp๋ฅผ ์ ์ธํด์ค์ผํ๋ค. 2. ๊ผญ dp๋ก fontSize๋ฅผ ์ ์ธํด์ค์ผ ํ๋ค๋ฉด, ์๋์ ๊ฐ์ด ์ ์ธ ํด์ฃผ๋ฉด ๋๋ค. (๋ฌด์กฐ๊ฑด Composable ์ด๋
ธํ
์ด์
์ ์ถ๊ฐํด์ค์ผ๋ง ๊ฐ๋ฅํ ํจ์์ด๋ค) 3. ํ์ง๋ง ๋์์ด๋์ ์ผํ๋ฉด์ textStyle ..
Development
๋ณธ๊ฒฉ์ ์ผ๋ก ๊ฐ๋ฐ ๋ธ๋ก๊ทธ๋ฅผ ์์ํ๋ ค๋๋ฐ ํญ์ ๋ณด๊ธฐ๋ง ํด์ค๋ ๊ฒ์ ๋ง๋ค์ด์ผํ๋ ์ฌ์ ์ด๋. ์ ํ๋ธ๋ฅผ ๋งค์ผ ๋ณด์ง๋ง ๊ทธ๊ฑธ ์ง์ ๋ด๊ฐ ๋ง๋ ๋ค๋ฉด? ์ด๋ผ๋ ๋ง์๊ณผ ๋น์ทํ๊ฒ ์ง์
์ฅ๋ฒฝ์ด ์๊ฐ๋ณด๋ค ๋๋ค. ์ฌ๋ฌ๊ฐ์ง ์ง์
์ฅ๋ฒฝ ํน์ ๊ฑฑ์ ์ ๋์ดํด๋ณด์๋ฉด - ์์ฆ ๋ง์ด ์ฐ๋ ๋ฐ๊ณผ ํจ๊ป ์ฌ๋ฐ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค. - ์ด๋ณด์ฒ๋ผ ๋ณด์ด๊ณ ์ถ์ง ์๋ค. - ์ ๋๋ก ๋ ๊ธ์ ์ฐ์ง ์์ผ๋ฉด ์ฌ๋๋ค์ด ์ํ์ง ์์๊น? - ์ ์ด๋ค ์ฃผ์ ๋ก ๊ธ์ ์ฐ์ง? ๋ฑ๋ฑ... ์ง์ด์ด์ธ์ง ๊ณ ๋ฏผ์ ์๋ฐฑ๋ฒ ํ๊ณ ๊ธ์ ์ผ๋ค ์ง์ ๋ค๋ฅผ ๋ฐ๋ณตํ๋ฉฐ ์๊ฐ๊ฐ ๋๋ฉด ์ด๋ฐ ๋๋์ธ๊ฐ? ๋ผ๊ณ ์๊ฐ์ด ๋ค ์ ๋์๋ค. ์์ ๊ฑฑ์ ๋ค์ ํ๋์ฉ ํ์ด๋ณด์๋ฉด, - ์์ฆ ๋ง์ด ์ฐ๋ ๋ฐ๊ณผ ํจ๊ป ์ฌ๋ฐ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค. ์ด๊ฑด ๋ญ ํด๋ณด๋ฉด ๋๋ค. ๊ทผ๋ฐ ์ฌ์ง์ ์ฐพ๊ธฐ๋ ํด์ผํ๊ณ ๊ณ์ํด์ ๋ฐ์ ์๊ณ ์๋ ์ฌ๋์ด๋ผ๋ฉด ์ฌ์ฉํด๋ณด๋ฉด..
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) ๐ฅ ํ์๋ฅผ ๊ฐ๋ฅด์น๋ ํ๊ถ๋..
Development/Android
์ด๋ฒ์ FCM์ด ์ค๋ฉด ํน์ ํ์ด์ง๋ฅผ ๋ณด๊ณ ์๋ค๋ฉด ๊ทธ ํ์ด์ง์์ refresh๋ฅผ ํด์ผํ๋ ์ผ์ด ์๊ฒผ๋ค. ๋ฐ๋ก ๊ตฌํํ๋ ค๊ณ ํ๋ค๋ณด๋ Listener๋ฅผ ๋ฌ์์ผํ๋ ํ๋ ์๊ฐ์ ํ๋ฉด ๋ญ๊ฐ ์ฌ์ด๋ ์ดํํธ๊ฐ ๋ง์ด ์๊ธธ ๊ฒ ๊ฐ๊ณ ๊ท์ฐฎ์ ์์
์ด ๋๊ฒ ๋ค ์ถ์ด์ ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ Event Bus ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ผ๋ ์ถ์ฒ ๊ธ์ ๋ณด๊ฒ ๋๋ค. Event Bus๊ฐ ๋ญ์ผ? ๐๋ฒ์ค์์ ๐์ด๋ฒคํธ๐ ํ๋? (์ฃ์กํฉ๋๋ค) ๋ผ๋ ์๊ฐ์ ๊ด๋ จ ๊ธ์ ์ฐพ์๋ณด๋ ๋ฒ์ค ๋คํธ์ํฌ์ ๋์ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ํ๋์ ์ด๋ฒคํธ๋ฅผ ๋์ผ ์ฑ๋์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋
ธ๋(Subscriber)๋ค์๊ฒ ๋ณด๋ด๋ ๋ฐฉ์ ์ด๋ผ๋๋ฐ ๊ฐ๋จํ๊ฒ ๋์ ์ฉ์ด๋ก ์ค๋ช
ํ์๋ฉด A ์ฑ๋์ ๊ตฌ๋
ํ๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์๋ฆผ(evnet)์ ๋ณด๋ธ๋ค. Github์ ํด๋น ์ด๋ฏธ์ง๋ ๊ฐ์ด ์๋ค. (์ฌ์ค ์ฒ์..