본문 바로가기

안드로이드69

[Android-Compose] Compose 렌더링 단계 알아보기 (Android Compose Rendering) 이번 포스팅은 Compose의 렌더링 단계를 알아보도록 하겠다.# 렌더링 단계우선 위 그림은 안드로이드 공식문서에 있는 렌더링 단계의 그림이다.렌더링 단계는 크게 총 3단계 컴포지션(Composeition), 레이아웃(Layout), 그리기(Drawing)로 나누어져 있다.이제 하나씩 알아가 보자!# 1. 컴포지션 (Composeition) 단계 - What 화면에 뭘 보여 줄지컴포지션 단계에서는 UI 코드를 노드 트리 구조로 변환/만드는 단계이다.해당 트리를 생성하면서 각 UI  컴포넌트의 계층 구조와 속성들을 파악하고 생성된 트리는 2단계인 레이아웃 단계에서 사용이 된다.이제 노드 트리 구조를 어떤 식으로 만드는지 아래 예제를 보자!Column { Image( painter = re.. 2025. 1. 30.
[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.