Android86 [Android] 자주 사용하는 adb 명령어 정리 adb shell wm size : 디바이스에 설정된 현재 화면 해상도(논리 해상도)를 확인하는 명령어 2026. 2. 6. [Android / Troubleshooting] Android Studio에서 Vector Asset 아이콘이 보이지 않는 문제 해결 기록 Project structrue > SDK Location에서 sdk의 위치를 확인 한 다음icons_metadata.txt 파일을 삭제 해 준다. 이후, 안드로이드 스튜디오에서 다시 Vector Asset 추가를 해 보면 정상적으로 나오는 것을 확인 할 수 있다. 2026. 2. 6. [Android/Kotlin]문자열 리소스 포맷(%s, %d, %1$s) 사용하기 UI를 구현하다 보면 초기에는 화면을 빠르게 구성하는 데 집중하게 됩니다.하지만 점차 가독성, 유지보수성, 그리고 다국어 대응까지 고려하게 되면서 문자열 처리 방식도 함께 정리할 필요가 있습니다.이 글에서는 Text를 여러 개 사용하던 초기 구현에서stringResource와 포맷 문자열을 활용하는 방식으로 개선한 과정을 정리합니다.초기 구현: Text를 분리하여 문자열 구성처음에는 아래와 같이 문자열과 숫자를 각각 Text로 나누어 표시하였습니다.Row(modifier = Modifier.padding(8.dp)) { Text( text = "투입박스 ", color = Color.White, fontWeight = FontWeight.Bold, .. 2026. 2. 3. [Android/Kotlin] 코틀린에서 프로퍼티(Property) 이해하기 최근에 enum class를 사용하면서 이런 코드를 작성했습니다.enum class SortField(val label: String) { SlipNumber("전표 번호순"), RegisteredDate("완료 일시 순")} 그런데 사용하다가 문득,“생성자에서 label을 정의해준 것뿐인데, 왜 field.label처럼 바로 접근해서 사용할 수 있을까?”하는 의문이 들었습니다. 이게 단순히 val이라 그런 건지, 아니면 코틀린이 프로퍼티를 특별하게 다루는 건지 궁금해서조금 더 자세히 공부해본 내용을 정리해두기로 했습니다.1. 프로퍼티란 무엇일까? 간단히 말해서,프로퍼티(Property)는 “객체(Object)가 가지고 있는 속성(데이터)”을 의미합니다. 예를 들어 사람을 표현하는 Person.. 2025. 10. 27. [Android/Coroutine] Cold Stream vs Hot Stream 쉽게 이해하기: 언제 어떤 것을 써야 할까? 코루틴을 사용하다 보면 Flow, StateFlow, SharedFlow와 같은 다양한 스트림 타입을 접하게 됩니다.이때 함께 따라오는 개념이 바로 Cold Stream과 Hot Stream입니다.처음에는 문서에 나와 있는 특징들을 정리하며 각각을 구분해보려 했지만,막상 실제 코드에 적용해 보려 하니 어떤 상황에서 무엇을 선택해야 할지 명확하게 감이 오지 않았습니다.그래서 이 개념들을 좀 더 쉽게, 감각적으로 이해할 수 있는 방법이 없을까 고민하게 되었고,그 과정에서 일상에서 흔히 겪는 상황들을 비유로 떠올려 보며 Cold Stream과 Hot Stream의 차이를 정리해 보았습니다.Cold Stream이란?Cold Stream은 collect가 시작되어야 비로소 동작하는 스트림입니다. 대표적으로 Kot.. 2025. 3. 28. [Android/Kotlin] Kotlin 컬렉션 확장 함수 정리: associateBy 사용법 Kotlin에서는 리스트나 배열과 같은 컬렉션을 다룰 때 유용한 확장 함수(Extension Function)들이 많이 제공됩니다. 그 중에서도 associateBy는 컬렉션을 Map으로 변환할 때 자주 사용되는 함수입니다.이 글에서는 associateBy의 기본 개념부터 실전 예제까지 정리해보았습니다.associateBy란?associateBy는 컬렉션(List, Array 등)의 요소를 기준값으로 묶어 Map으로 변환해주는 확장 함수입니다.즉, 리스트의 각 요소에서 특정 값을 꺼내 Key로 삼고, 해당 요소를 Value로 하여 Map을 만드는 방식입니다.기본 사용법val resultMap = list.associateBy { it.someProperty } someProperty는 각 요소에서 추출한.. 2025. 3. 27. [Android/Compose] collectAsState()를 활용한 상태 관리 Jetpack Compose에서 Flow 또는 StateFlow를 UI에서 구독할 때, 상태를 효율적으로 관리하는 것이 중요합니다.이때 collectAsState()를 사용하면 Flow를 State로 변환하여 UI가 자동으로 최신 상태를 반영할 수 있습니다.이번 글에서는 collectAsState()가 무엇이며, 어떻게 사용해야 하는지 공부 한 내용을 정리하겠습니다.1. collectAsState()란?collectAsState()는 Jetpack Compose에서 Flow나 StateFlow를 구독하여 State로 변환하는 함수입니다.이 함수를 사용하면 Composable 내부에서 Flow를 안전하게 수집(collect)할 수 있으며, 값이 변경될 때 자동으로 UI가 갱신됩니다.또한, State로 변환.. 2025. 3. 20. [Android/Coroutine] SharingStarted.WhileSubscribed(): 효율적인 Flow 공유 전략 Flow를 UI에서 구독할 때 불필요한 리소스 낭비를 방지하는 것이 중요합니다.SharingStarted.WhileSubscribed()를 사용하면 구독자가 있을 때만 데이터를 방출하고, 없으면 정지하는 방식으로 Flow를 최적화할 수 있다는 것을 알게 되었습니다.이번 글에서는 SharingStarted.WhileSubscribed()가 무엇인지, 그리고 어떤 상황에서 유용한지 공부한 내용을 정리해두겠습니다.1. SharingStarted란?SharingStarted는 Flow를 여러 곳에서 공유할 때 흐름을 언제 시작하고, 언제 중지할지를 결정하는 전략입니다.이를 활용하면 ViewModel에서 Flow 데이터를 공유하고, UI에서 구독할 때 불필요한 연산을 줄일 수 있습니다.SharingStarted .. 2025. 3. 20. [Android/Kotlin] Retrofit에서 인터페이스를 활용한 API 요청 처리 원리 안드로이드에서 네트워크 요청을 쉽게 처리할 수 있도록 도와주는 대표적인 라이브러리인 Retrofit을 공부하면서, 한 가지 궁금한 점이 생겼습니다.Retrofit을 사용할 때 interface를 retrofit.create()에 넘겨주기만 하면 네트워크 통신이 자동으로 이루어진다는 점이었습니다.단순히 메서드를 선언한 인터페이스를 넘겼을 뿐인데, 실제 HTTP 요청이 발생하는 원리가 무엇인지 궁금했습니다.공부하면서 Retrofit이 인터페이스를 동적으로 구현하고, 내부적으로 HTTP 요청을 처리하는 과정을 이해하게 되었습니다.이번 글에서는 Retrofit이 API 요청을 어떻게 자동으로 처리하는지 정리해보겠습니다.Retrofit을 이용한 API 요청 흐름Retrofit을 사용할 때 interface를 정의.. 2025. 3. 12. 이전 1 2 3 4 ··· 10 다음 반응형