Kotlin54 [Compose] Button 클릭 시 2번씩 리컴포지션이 일어나는 이유 이번 포스팅은 Compose 스터디 중 어느 스터디원 중 한 분이 말씀하신 부분을 궁금해서 찾아본 결과를 포스팅하겠다.# 구현 상황@Preview@Composablefun AddMemo() { val inputValue = remember { mutableStateOf("") } Row( modifier = Modifier .padding(all = 16.dp) .height(100.dp), horizontalArrangement = Arrangement.End ) { // 임시 TextField TextField( modifier = Modifier .fil.. 2025. 1. 26. [Android-Compose] 컴포즈 NavHost에서 ViewModel 공유 예제를 통해 알아보기 - Screen끼리 공유 이번 포스팅은 Compose에서 NavHost 사용 시 다른 Screen끼리 ViewModel을 공유해야 할 상황이 생긴다.이때 ViewModel을 공유하는 방법을 포스팅해보겠다. 해결법을 바로 보고 싶으신 분은 결론으로 넘어가면 된다!# 예제이번 예제는 ScreenA와 ScreenB가 있고 같은 ViewModel를 사용해 데이터를 공유하는 상황이다.또한 DI 라이브러리를 사용 안 하는 상황프로세스를 자세히 표현하자면 아래와 같다.## Before 코드### MainActivityclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedI.. 2024. 12. 7. [Android] LiveData와 Flow 차이점 간단하게 알아보기 (LiveData vs Flow) 이번 공부 노트는 안드로이드에서의 비동기 개발 시 필수적으로 들어가는 Flow, LiveData 차이점에 대해 적어보겠다.# LiveData와 Flow 차이점1. 플랫폼 독립성- Flow : Kotlin 코루틴 기반의 라이브러리로, Android에 종속되지 않고 어디서든 사용할 수 있다.- LiveData : Android에 특화된 라이브러리로 Android 프레임워크에 종속적이기 때문에 안드로이드 생명주기(Lifecycle)와 깊이 연관되어 있다.2. 생명주기 인식- Flow : 생명주기를 인식하지 않는다. 이는 Flow를 사용하려면 수동으로 생명주기를 관리하거나 lifecycleScope와 같은 코루틴 스코프를 사용해 생명주기에 맞게 구독을 제어해야 한다.- LiveData : Android 생명주기.. 2024. 10. 5. [Android] 안드로이드 중요 값 숨기기 - local.properties를 사용하여 키 관리하기 예제(Kotlin) / Unresolved reference: BuildConfig 해결 방법 개발을 하다 보면 API키 값이나 중요 값등을 숨기고 싶을 때가 있다. 그럴 때는 local.properties를 사용하면 간단하게 숨김이 가능하다. 이제 차근차근 알아보자! ✅ 깃을 사용한다면. gitignore에 /build , /local.properties 이 두 가지가 들어가 있다고 가정하고 시작해 보겠다!# 사용방법아래 예제에서는 API_KEY값을 숨기는 예제를 해보겠다.## local.properties 변수 값 설정우선 가장 먼저 해야 할 것은 local.properties파일에 숨기고 싶은 값을 키 - 값 형식으로 작성해 준다. local.properties>API_KEY = "12345678910" ## build.gradle.kts(app) 키 값 불러오기앱 수준의 gradle에서 .. 2024. 8. 31. [Android-Compose] 안드로이드 컴포즈 부수 효과 알아보기! (Android Compose DisposableEffect, SideEffect, produceState, derivedStateOf, snapshotFlow) - SideEffect - 2편 이번에는 1편에 이어서 Compose의 부수효과를 알아보도록 하자!# DisposableEffect✅ 키가 변경되거나 컴포저블이 컴포지션을 종료한 후 정리해야 하는 부수 효과를 처리해 주는 API - Composable의 생명주기에 맞춰 정리되어야 하는 리스너나 작업이 있는 경우에 리스너나 작업을 제거하기 위해 사용된다.- 제공된 키 값이 변경될 때마다 이전 효과를 정리하고 새로운 효과를 실행한다.- LaunchedEffect, onDestroy와 유사한 역할을 한다. DisposableEffect는 다음과 같은 형태로 사용된다.DisposableEffect(key1, key2) { // Composable이 제거될 때 Dispose 되어야 하는 효과 초기화 onDispose { .. 2024. 7. 30. [오류] app:minifyReleaseWithR8 FAILED / AGPBI: {"kind":"error","text":"Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in 이번 오류 포스팅은 debug 모드로 빌드했을 때는 문제가 없었는데 release 모드로 빌드하니 오류 발생에 대해 해결방법을 포스팅해 보겠다. 물론 다른 경우에 따라 이 해결방법이 아닐 수도 있지만 나에 경우는 이 오류였기 때문에 혹시나 나랑 같은 분이 계실까 봐 공유를 한다.# 오류 발단기존 프로젝트에서 Active Build Variant를 release로 바꾸고 빌드하니 아래와 같은 오류가 발생했다. AGPBI: {"kind":"error", "text":"Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /Users/(폴.. 2024. 6. 19. 이전 1 2 3 4 ··· 9 다음