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/Android
์ด ๊ธ์์ ๋ฐฐ์ธ์ - ๋ค๋ฅธ DI์์ ์ฐจ์ด์ - Hilt์ ๊ดํ ์ ๋ฐ์ ์ธ ์ง์ - Hilt๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ - Hilt์์ ์์ฃผ ์ฌ์ฉํ๋ Annotation DI -> Dependency Inject ์์กด์ฑ ์ฃผ์
์ด๋ผ๊ณ ํ๋ค. ์ด์ ์ Koin์ ๊ดํ ๋ธ๋ก๊ทธ๋ฅผ ์์ฑ ํ์ ๋๋ ๊ณต๋ถ๋ฅผ ํ์์ง๋ง Hilt๋ฅผ ์ข ๋ ๋ง์ด ์์๋ณด๋ ค ๋ค์๊ธ ๊ธ์ ์ด๋ค. ์ด์ ์ ์ผ๋ Koin์ ๊ดํ ๋ธ๋ก๊ทธ ์์กด์ฑ ์ฃผ์
์ Koin๐ช ํ ๋ข์ - 1 ์์กด์ฑ ์ฃผ์
์ด๋ผ.. ๋๋ฌด๋๋ ์ต์ํ์ง ์์ ๋ฌธ์ฅ์ด๋ค. ๋จ์๊ฒ ์์กดํ์ง๋ง๊ณ ์ฃผ์ฒด์ ์ผ๋ก ์ด์ ๋ผ๋ ๋ง์ ์ฌ์ฉํ ๋๋ง ์ผ๋ ๋จ์ด๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ๋ ์ด์ํ๊ณ ๋จ๋ฒ์ ์ดํด๊ฐ ๋์ง ์๋๋ค. ์์กด taekwon-seungwon.tistory.com ์์กด์ฑ ์ฃผ์
์ Koin๐ช ๋ ๋ข์ - 2 ์ด๋ฒ์ ์ค์ ๋ก..
Development/Android
์๋๋ก์ด๋ ๊ฐ๋ฐ์ ํ๋ฉด์ ๊ฐ์ฅ ์ค์ํ ์ ์ ๊ทธ๋ฅ ๊ธฐ๋ฅ์ ์ ๋ถ์ด๋๊ฒ ์๋๋๊ฑธ ๋ง์ ๋ถ๋ค์ด ๊ณต๊ฐํ์ค๊ฑฐ๋ค. ํธ๋ํฐ๋ ์์ ์ปดํจํฐ์ด๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ์ ํด์ผํ๊ณ ๊ณผ๋ถํ๊ฐ ์ค์ง ์๊ฒ, ์ฌ์ฉ์๊ฐ ๋งค๋๋ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๊ฐ๋ฐ์ ํ๋๊ฒ ๊ฐ๋ฐ์ ์ํ๋ค๊ณ ์๊ฐํ๋ค.(ํ์ฌ๊น์ง...) ์ฐ์ฐจ๊ฐ ์์ด๊ณ ๊ฒฌํด์ ์ง์์ด ์กฐ๊ธ์ฉ ๋์ด๊ฐ์๋ก ๋ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ๋ถ๋ถ๋ค์ด ๋ณํด๊ฐ๋ฉด์ ๊ณต๋ถํด์ผํ๋ ๊ฒ๋ค์ด ๋ง์์ง๋ค. ๋ฐฐ์์๋ ๋์ด ์๋ ๊ฒ ๊ฐ๋ค. ์ผ๋จ Thread๋ ๋ฌด์์ธ๊ฐ? ๐ ์ฌ์ ์ ์๋ฏธ - "ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์ฌ๋ฌ ํ๋ฆ์ ๋จ์" - ํ๋ก์ธ์ค์ ํน์ ํ ์ํ ๊ฒฝ๋ก - ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์์์ ์ด์ฉํ๋ ์คํ์ ๋จ์ ๐ง๐ปโ๐ป ์ดํดํ๊ธฐ ์ฌ์ด ๋๋ง์ ์๋ฏธ - ๋ฐฅ์ ๋ง๋ค ๋ ๋ฐฅ์ฅ์ ์ทจ์ฌ๋ฒํผ์ ๋๋ฅด๊ณ ๋ฐฅ์ด ๋ค ๋ ๋๊น์ง ๊ตญ์ ๋์ธ๋ค..
Development/Android
์ค๋์ ํ์ด์ด๋ฒ ์ด์ค์ remote config๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋์ง ์์๋ณด๋ ค๊ณ ํ๋ค. ํ์๋ ์ฑ์ ๊ผญ ์
๋ฐ์ดํธ๋ฅผ ํด์ผํ๋ ๊ฒฝ์ฐ์ ์ด ๊ฒ์ ์ฌ์ฉํ๊ณ ์๋ค. ์ผ๋จ Firebase์ Remote Config๋ ์ฑ์์ ๋ณ๋์ ์
๋ฐ์ดํธ๋ฅผ ํ์ง ์์๋ ์ฑ์ ๋์์ด๋ ๋ชจ์์ ๋ณ๊ฒฝํ ์ ์๋ ํด๋ผ์ฐ๋ ์๋น์ค์ด๋ค. ๋ง์ฝ ํ์์ ๊ฐ์ ๋ฒ์ ์ฒดํฌ๋ฅผ ํ์ฌ ์ฑ์ ๊ฐ์ ์
๋ฐ์ดํธํ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค๋ ์ ์ ํ์ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํด๋ณด๊ฒ ๋ค. ์ผ๋จ firebase์ ๋ด ์ฑ์ด ์ฐ๊ฒฐ๋์ด ์๋ค๋ ์ ์ ํ์ ์งํํ๊ฒ ๋ค. (์ถํ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์ฑํ ์์ ) 1. gradle์ implementation ์ํจ๋ค. implementation 'com.google.firebase:firebase-core:21.1.0' implementation 'co..
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์ ํด๋น ์ด๋ฏธ์ง๋ ๊ฐ์ด ์๋ค. (์ฌ์ค ์ฒ์..
'Development/Android' ์นดํ
๊ณ ๋ฆฌ์ ๊ธ ๋ชฉ๋ก
๋จ์ถํค
๋ด ๋ธ๋ก๊ทธ
๋ด ๋ธ๋ก๊ทธ - ๊ด๋ฆฌ์ ํ ์ ํ |
Q
Q
|
์ ๊ธ ์ฐ๊ธฐ |
W
W
|
๋ธ๋ก๊ทธ ๊ฒ์๊ธ
๊ธ ์์ (๊ถํ ์๋ ๊ฒฝ์ฐ) |
E
E
|
๋๊ธ ์์ญ์ผ๋ก ์ด๋ |
C
C
|
๋ชจ๋ ์์ญ
์ด ํ์ด์ง์ URL ๋ณต์ฌ |
S
S
|
๋งจ ์๋ก ์ด๋ |
T
T
|
ํฐ์คํ ๋ฆฌ ํ ์ด๋ |
H
H
|
๋จ์ถํค ์๋ด |
Shift + /
โง + /
|
* ๋จ์ถํค๋ ํ๊ธ/์๋ฌธ ๋์๋ฌธ์๋ก ์ด์ฉ ๊ฐ๋ฅํ๋ฉฐ, ํฐ์คํ ๋ฆฌ ๊ธฐ๋ณธ ๋๋ฉ์ธ์์๋ง ๋์ํฉ๋๋ค.