profile
๐Ÿ‘ฉโ€๐Ÿ’ป
post-thumbnail

Kotlin Flows in practice

๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ํ๋ฅด๊ฒŒ ํ•˜๊ณ  ์ˆ˜๋„๊ด€ ์—ญํ• ์„ ํ•˜๋Š” ์ธํ”„๋ผ๋ฅผ ๊ตฌํ˜„ํ•ด์„œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ๊ฒฐํ•ฉํ•˜๊ณ  ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ๊ฒฐํ•ฉํ•˜๊ณ  ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ์ •๊ตํ•œ ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ๊ทธ๊ฒŒ ์˜ค๋Š˜ ์ •๋ฆฌํ•ด๋ณผ **Flow**์ด๋‹ค!

2022๋…„ 3์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android] Retrofit2โ†”REST API

REST REST(REpresentational State Transfer)๋Š” ์ž์›์˜ ํ‘œํ˜„์— ์˜ํ•œ ์ƒํƒœ ์ „๋‹ฌ์„ ์˜๋ฏธํ•จ. REST๋Š” ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ client์™€ server ์‚ฌ์ด์˜ ํ†ต์‹  ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋กœ ํ”„๋กœํ† ์ฝœ์ด๋‚˜ ํ‘œ์ค€์ด ์•„๋‹Œ ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์ž„.

2022๋…„ 2์›” 21์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

Jetpack Compose๊ฐœ๋…

์‹œ๋Œ€๊ฐ€ ๋ณ€ํ•˜๋ฉด์„œ ๊ธฐ๊ธฐ ์„ฑ๋Šฅ์˜ ํ–ฅ์ƒ๊ณผ ๋”๋ถˆ์–ด ์•ฑ์— ๋Œ€ํ•œ ๊ธฐ๋Œ€๊ฐ€ ๋†’์•„์ง€๋ฉด์„œ ์ตœ์‹  ์•„ํ‚คํ…์ณ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”ํ‹€๋ฆฐ์„ ํ™œ์šฉํ•˜๋Š” ์„ ์–ธ์  UI๋„๊ตฌ ํ‚คํŠธ์ธ Jetpack Compose๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค.

2022๋…„ 1์›” 25์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android/kotlin] RecyclerView ListAdapter + Diffutil

๊ธฐ์กด์— notifyDataSetChanged()๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด 1๊ฐœ๋งŒ ๋ฐ”๋€Œ์–ด๋„ ๋‚˜๋จธ์ง€ ๋ฐ์ดํ„ฐ๋„ ๋ชจ๋‘ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ถˆํ•„์š”ํ•จ์ด ์žˆ์—ˆ๋Š”๋ฐ ListAdapter๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—์„œ DiffUtil๋ฅผ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ๊ต์ฒด ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. Re

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android/Kotlin] Room

Room์€ ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ธฐ๊ธฐ๊ฐ€ ๋„คํŠธ์›Œํฌ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์„๋•Œ ์˜คํ”„๋ผ์ธ ์ƒํƒœ์ผ๋•Œ๋„ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ์ „ํžˆ ์ฝ˜ํ…์ธ ๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐ๊ธฐ๊ฐ€ ๋‹ค์‹œ ์˜จ๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ์ฝ˜ํ…์ธ  ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์„œ๋ฒ„์— ๋™๊ธฐํ™”๋œ๋‹ค. Room์€ ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜

2021๋…„ 11์›” 16์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android] ๋”ฅ๋งํฌ

๋”ฅ ๋งํฌ๋Š” ํ™ˆํŽ˜์ด์ง€๊ฐ€ ์•„๋‹Œ ํ™ˆํŽ˜์ด์ง€ ๋‚ด์˜ ํŠน์ • ํ™”๋ฉด์— ํ•œ ๋ฒˆ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ๋ฅผ ๋งํ•œ๋‹ค. ๋งํฌ๋Š” ๋ชจ๋ฐ”์ผ๊ณผ ์›น์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์ด๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋“ค์ž๋ฉด https://velog.io/ ๋ฒจ๋กœ๊ทธ ์ž์ฒด ๋งํฌ๊ฐ€ ์•„๋‹Œ ๋‚˜์˜ ๋ฒจ๋กœ๊ทธ(ํŠน์ •ํ™”๋ฉด)์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•œ ๋ง

2021๋…„ 10์›” 21์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android/kotlin] MVVM ViewModel Event ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

ViewModel Event ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์ข‹์€ ๊ธ€์ด ์žˆ์–ด์„œ ๋‚˜์ค‘์— ๋ณด๋ ค๊ณ  ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค!!!LiveData -> SingleLiveData -> SharedFlow -> EventFlowLiveData + EventViewModel์—์„œ LiveData๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฒคํŠธ๋ฅผ

2021๋…„ 10์›” 1์ผ
ยท
1๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android/์•ˆ๋“œ๋กœ์ด๋“œ] Thread/Handler/Looper

ํ”„๋กœ์„ธ์Šค : ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ ex) ์‹คํ–‰์ค‘์ธ ์ธ์Šคํƒ€๊ทธ๋žจํ”„๋กœ์„ธ์Šค๋Š” (๋‹ค์ˆ˜์˜) ์ž‘์—… ๋‹จ์œ„ ์ง‘ํ•ฉ์Šค๋ ˆ๋“œ(Thread) : ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์ƒ์˜ ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ํ๋ฆ„ ex) ์ข‹์•„์š” ๊ธฐ๋Šฅ, ์Šคํ† ๋ฆฌ ๊ณต์œ  ๊ธฐ๋Šฅ ๋“ฑํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์—๋Š” ๋ฉ”์ธ์Šค๋ ˆ๋“œ๋งŒ ์žˆ๊ฑฐ๋‚˜ ๋ฉ”์ธ์Šค๋ ˆ๋“œ + ์„œ๋ธŒ์Šค๋ ˆ๋“œ๋กœ

2021๋…„ 9์›” 27์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android/์•ˆ๋“œ๋กœ์ด๋“œ] LiveData๋ฅผ ์•Œ์•„๋ณด์ž

LiveData๋ž€? > LiveData๋Š” ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ํ™€๋” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ์ผ๋ฐ˜ ํด๋ž˜์Šค์™€ ๋‹ฌ๋ฆฌ LiveData๋Š” ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ์ธ์‹ํ•œ๋‹ค. ์ฆ‰, ํ™œ๋™, ํ”„๋ž˜๊ทธ๋จผํŠธ, ์„œ๋น„์Šค ๋“ฑ ๋‹ค๋ฅธ ์•ฑ ๊ตฌ์„ฑ์š”์†Œ์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ณ ๋ คํ•œ๋‹ค. ์ˆ˜๋ช… ์ฃผ๊ธฐ ์ธ์‹์„ ํ†ตํ•ด LiveDat

2021๋…„ 9์›” 17์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android/์•ˆ๋“œ๋กœ์ด๋“œ] ์ฝ”๋ฃจํ‹ด์˜ ๊ธฐ์ดˆ

๐Ÿ“Œ์ฝ”๋ฃจํ‹ด(Coroutine)์ด๋ž€? > ์ฝ”๋ฃจํ‹ด์€ ์ฝ”๋ฃจํ‹ด์ด ์‹œ์ž‘๋œ ์Šค๋ ˆ๋“œ๋ฅผ ์ค‘๋‹จํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ 1. ํ˜‘๋ ฅํ˜• ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น co(ํ•จ๊ป˜, ๋™์‹œ์—)+Routine(ํŠน์ •ํ•œ ์ผ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ๋ช…๋ น) ์ฝ”๋ฃจํ‹ด ํ•จ์ˆ˜๋Š” ์–ธ์ œ๋“ ์ง€ ์ค‘๊ฐ„์— ๋‚˜๊ฐˆ

2021๋…„ 9์›” 14์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android/์•ˆ๋“œ๋กœ์ด๋“œ] Gradle Scripts์— ๋Œ€ํ•œ ์ •๋ฆฌ

๐Ÿ“ŒGradle Scripts๋ž€? > _์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด Gradle Scripts ์•ˆ์— build.gradle, settings.gradle ๋“ฑ์˜ ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. ์ด ํŒŒ์ผ๋“ค์„ ํ†ตํ•ด ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ์˜ ๋นŒ๋“œ ์ •๋ณด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ๊ด€๋ฆฌํ•œ๋‹ค._

2021๋…„ 9์›” 7์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android/kotlin] ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ TabLayout, Filterable ์‚ฌ์šฉ๋ฒ•

โœTabLayout, Filterable ์‚ฌ์šฉ๋ฒ• >Tablayout์„ ์‚ฌ์šฉํ•ด์„œ ์›ํ•˜๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ฆฌ์ŠคํŠธ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ๋ฅผ ํ•„ํ„ฐ๋ง ํ—ค๋ณด์ž!! TabLayout ๊ตฌ์„ฑ **1. TabLayout์•ˆ์— ์›ํ•˜๋Š” tabItem์„ ๋ฐฐ์น˜ํ•œ๋‹ค(ex: All, L

2021๋…„ 9์›” 2์ผ
ยท
1๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android/Kotlin] Infinite/endless Scrolling(๋ฌดํ•œ ์Šคํฌ๋กค) ํŽ˜์ด์ง•

RecyclerView ๋ฌดํ•œ ์Šคํฌ๋กค ๋ฌดํ•œ ์Šคํฌ๋กค์ด๋ž€? ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ‘์œผ๋กœ ์Šคํฌ๋กค ํ–ˆ์„ ๋•Œ progressBar๊ฐ€ ๋ณด์˜€๋‹ค๊ฐ€, ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์„ ๋งํ•จ. ** ๐Ÿ“Œ๊ตฌํ˜„๋ฐฉ๋ฒ• RecyclerView ์ƒ์„ฑ Scroll์ด ๋์— ๋‹ฟ๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•˜์—ฌ ๋‹ฟ์•˜์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ์—

2021๋…„ 9์›” 1์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android/kotlin] Cannot call this method in a scroll callback

์ฐธ๊ณ ์‚ฌ์ดํŠธ

2021๋…„ 8์›” 31์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Android/์•ˆ๋“œ๋กœ์ด๋“œ] Manifest๋ž€?

๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์€ Android ๋นŒ๋“œ ๋„๊ตฌ, Android ์šด์˜์ฒด์ œ ๋ฐ Google Play์— ์•ฑ์— ๊ด€ํ•œ ํ•„์ˆ˜ ์ •๋ณด๋ฅผ ์„ค๋ช…ํ•œ๋‹ค. ๊ฐ€์žฅ ์ƒ์œ„ ํด๋”์— AndroidManifest.xml์ด ์žˆ์–ด์•ผํ•˜๋ฉฐ, ์ด ์ •๋ณด๋Š” ์•ฑ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— ์‹œ์Šคํ…œ์ด ์•Œ์•„์•ผ ํ•  ๋‚ด์šฉ์„ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค.

2021๋…„ 8์›” 29์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท