๋ชฉ๋กDevelopment/Android (11)

๐Ÿ’ป ๊ฐœ๋ฐœ์ฐจ๊ธฐ ๐Ÿฅ‹ feat.Android

DI - Hilt์˜ ๊ด€ํ•˜์—ฌ

์ด ๊ธ€์—์„œ ๋ฐฐ์šธ์  - ๋‹ค๋ฅธ DI์™€์˜ ์ฐจ์ด์  - Hilt์˜ ๊ด€ํ•œ ์ „๋ฐ˜์ ์ธ ์ง€์‹ - Hilt๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• - Hilt์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” Annotation DI -> Dependency Inject ์˜์กด์„ฑ ์ฃผ์ž… ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด์ „์˜ Koin์— ๊ด€ํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ์ž‘์„ฑ ํ–ˆ์„ ๋•Œ๋„ ๊ณต๋ถ€๋ฅผ ํ–ˆ์—ˆ์ง€๋งŒ Hilt๋ฅผ ์ข€ ๋” ๋งŽ์ด ์•Œ์•„๋ณด๋ ค ๋‹ค์‹œ๊ธˆ ๊ธ€์„ ์“ด๋‹ค. ์ด์ „์— ์ผ๋˜ Koin์— ๊ด€ํ•œ ๋ธ”๋กœ๊ทธ ์˜์กด์„ฑ ์ฃผ์ž…์˜ Koin๐Ÿช™ ํ•œ ๋‹ข์„ - 1 ์˜์กด์„ฑ ์ฃผ์ž…์ด๋ผ.. ๋„ˆ๋ฌด๋‚˜๋„ ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๋ฌธ์žฅ์ด๋‹ค. ๋‚จ์—๊ฒŒ ์˜์กดํ•˜์ง€๋ง๊ณ  ์ฃผ์ฒด์ ์œผ๋กœ ์‚ด์ž ๋ผ๋Š” ๋ง์„ ์‚ฌ์šฉํ•  ๋•Œ๋งŒ ์ผ๋˜ ๋‹จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋‹ˆ ์–ด์ƒ‰ํ•˜๊ณ  ๋‹จ๋ฒˆ์— ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค. ์˜์กด taekwon-seungwon.tistory.com ์˜์กด์„ฑ ์ฃผ์ž…์˜ Koin๐Ÿช™ ๋‘ ๋‹ข์„ - 2 ์ด๋ฒˆ์—” ์‹ค์ œ๋กœ..

Development/Android 2023. 7. 10. 00:18
Thread์˜ ๊ด€ํ•˜์—ฌ ๋ง‰ ์ ์–ด๋ณด๊ธฐ

์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€ ๊ทธ๋ƒฅ ๊ธฐ๋Šฅ์„ ์ž˜ ๋ถ™์ด๋Š”๊ฒŒ ์•„๋‹ˆ๋ž€๊ฑธ ๋งŽ์€ ๋ถ„๋“ค์ด ๊ณต๊ฐํ•˜์‹ค๊ฑฐ๋‹ค. ํ•ธ๋“œํฐ๋„ ์ž‘์€ ์ปดํ“จํ„ฐ์ด๊ธฐ์— ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋„ ์ž˜ ํ•ด์•ผํ•˜๊ณ  ๊ณผ๋ถ€ํ™”๊ฐ€ ์˜ค์ง€ ์•Š๊ฒŒ, ์‚ฌ์šฉ์ž๊ฐ€ ๋งค๋„๋Ÿฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ฐœ๋ฐœ์„ ํ•˜๋Š”๊ฒŒ ๊ฐœ๋ฐœ์„ ์ž˜ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.(ํ˜„์žฌ๊นŒ์ง„...) ์—ฐ์ฐจ๊ฐ€ ์Œ“์ด๊ณ  ๊ฒฌํ•ด์™€ ์ง€์‹์ด ์กฐ๊ธˆ์”ฉ ๋Š˜์–ด๊ฐˆ์ˆ˜๋ก ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„๋“ค์ด ๋ณ€ํ•ด๊ฐ€๋ฉด์„œ ๊ณต๋ถ€ํ•ด์•ผํ•˜๋Š” ๊ฒƒ๋“ค์ด ๋งŽ์•„์ง„๋‹ค. ๋ฐฐ์›€์—๋Š” ๋์ด ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ผ๋‹จ Thread๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ๐Ÿ›  ์‚ฌ์ „์  ์˜๋ฏธ - "ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ํ๋ฆ„์˜ ๋‹จ์œ„" - ํ”„๋กœ์„ธ์Šค์˜ ํŠน์ •ํ•œ ์ˆ˜ํ–‰ ๊ฒฝ๋กœ - ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰์˜ ๋‹จ์œ„ ๐Ÿง‘๐Ÿป‍๐Ÿ’ป ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋‚˜๋งŒ์˜ ์˜๋ฏธ - ๋ฐฅ์„ ๋งŒ๋“ค ๋•Œ ๋ฐฅ์†ฅ์˜ ์ทจ์‚ฌ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  ๋ฐฅ์ด ๋‹ค ๋  ๋•Œ๊นŒ์ง€ ๊ตญ์„ ๋“์ธ๋‹ค..

Development/Android 2023. 4. 11. 13:10
๐Ÿ›  ์‚ฌ์šฉ์ž๋“ค์ด ์•ฑ์„ ์ž ์‹œ ๋ชป ์“ฐ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‚˜? - Firebase Remote Config

์˜ค๋Š˜์€ ํŒŒ์ด์–ด๋ฒ ์ด์Šค์˜ remote config๋ฅผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ํ•„์ž๋Š” ์•ฑ์„ ๊ผญ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์— ์ด ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์ผ๋‹จ Firebase์˜ Remote Config๋ž€ ์•ฑ์—์„œ ๋ณ„๋„์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ์•ฑ์˜ ๋™์ž‘์ด๋‚˜ ๋ชจ์–‘์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์ด๋‹ค. ๋งŒ์•ฝ ํ•„์ž์™€ ๊ฐ™์€ ๋ฒ„์ „ ์ฒดํฌ๋ฅผ ํ•˜์—ฌ ์•ฑ์„ ๊ฐ•์ œ ์—…๋ฐ์ดํŠธํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋Š” ์ „์ œํ•˜์— ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ๋‹ค. ์ผ๋‹จ firebase์™€ ๋‚ด ์•ฑ์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋Š” ์ „์ œํ•˜์— ์ง„ํ–‰ํ•˜๊ฒ ๋‹ค. (์ถ”ํ›„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž‘์„ฑํ•  ์˜ˆ์ •) 1. gradle์— implementation ์‹œํ‚จ๋‹ค. implementation 'com.google.firebase:firebase-core:21.1.0' implementation 'co..

Development/Android 2022. 9. 18. 01:05
Databinding ์—์„œ ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฐ€๊ณตํ• ๊นŒ? ๐Ÿฝ

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 2022. 9. 18. 01:00
๐Ÿ“ฆ Databinding์„ ์“ฐ๋ฉด์„œ - 2

์ด๋ฒˆ์—” RecyclerView ViewPager image ๋“ค์„ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด Databinding์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ ์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต RecyclerView๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Adapter ๋ฐ˜๋ณต๋  Layout RecyclerView๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์—์„œ์˜ ์„ ์–ธ ๋“ค์ด ํ•„์š”ํ•œ๋ฐ Databinding์„ ์ด์šฉํ•˜๋ฉด ์•ฝ๊ฐ„์”ฉ ๋‹ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. (๊ธฐ๋ณธ์ ์ธ RecyclerView๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ „์ œํ•˜์— ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ™‡‍โ™‚๏ธ) 1. ๊ฐ€์žฅ ๋จผ์ € ๋ฐ˜๋ณตํ•˜์—ฌ ์‚ฌ์šฉํ•  Layout์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. โ€‹ โ€‹ โ€‹ โ€‹ โ€‹ โ€‹ โ€‹ ์œ„์™€ ๊ฐ™์ด ๋ฐ”์ธ๋”ฉ์œผ๋กœ ๋ฌถ์–ด์ฃผ๊ณ  ์‚ฌ์šฉํ•  item(data class) ๋ชจ๋ธ์„ variable๋กœ ์„ ์–ธ ํ•ด์ค๋‹ˆ๋‹ค. ์„ ์–ธํ•œ item์œผ๋กœ ๊ฐ View์— ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. (์นด์นด์˜ค ์ฃผ์†Œ์ฐพ๊ธฐ api๋ฅผ ์‚ฌ์šฉํ•จ ๐Ÿ•บ๐Ÿผ) 2. A..

Development/Android 2022. 9. 8. 18:53
๐Ÿ“ฆ Databinding์„ ์“ฐ๋ฉด์„œ - 1

Databinding์ด๋ž€!(๋ฐ์ดํ„ฐ ๋ฌถ๊ธฐ?) → ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ์˜ data binding ์ด๋ž€, Android Archictecture Components ์˜ ํ•œ ๋ถ€๋ถ„์œผ๋กœ์„œ Ui ์š”์†Œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋กœ๊ทธ๋žจ์  ๋ฐฉ์‹์œผ๋กœ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๊ณ , ์„ ์–ธ์  ํ˜•์‹์œผ๋กœ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค. ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด MVVMํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ Activity๋‚˜ Fragment์—์„œ ๋ทฐ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋“ค์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  xml ์ฝ”๋“œ์— ์ง‘์–ด ๋„ฃ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์„ ViewModel์—์„œ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋” ๋” ๋” ํ”ผ๋ถ€์— ์™€๋‹ฟ๊ฒŒ ๋งํ•˜์ž๋ฉด Activity๋‚˜ Fragment์—์„œ ๋งŽ์€ ์ฝ”๋“œ๋“ค์„ ์ ์ง€ ์•Š๊ฒŒ ํ•จ์œผ๋กœ์จ ๋ทฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณ€ํ™˜์‹œํ‚ค๋Š” ์ฝ”๋“œ๋Š” ViewModel์—์„œ ๊ด€๋ฆฌํ•ด์„œ Activity & Fragment ๋“ค์˜ ์ฝ”๋“œ๋Š” ๋”์šฑ ..

Development/Android 2022. 9. 8. 18:39