Composable 함수의 속성 @Composable 어노테이션을 통해서 함수나 표현식의 타입을 변경 해당 타입에 일부 제약 사항이나 특성을 부여 Compose Runtime Composable 함수가 사전에 정의된 특성을 준수하도록 가정 효과 병렬적인 Composition 우선순위에 따른 임의의 Composition 정렬 효과적인 Recomposition 위치 기억법 (positional memoization) 호출 컨텍스트 (Calling context) Compose Compiler는 일반적인 컴파일러 실행단계 중에 동작 Composable 함수의 중간 표현인 Intermediate Representation을 변환하여 추가적인 정보 부여 함수의 매개변수 목록의 끝에 새롭게 추가된 Composer ..
Android
Composable Function Jetpack Compose에서 가장 기본이 되는 요소 Composable Function의 의미 Composable 트리 구조 작성에 사용 Compose Runtime이 메모리에서 Composable 함수를 하나의 node로 이해 Composable Function 작성 방법 @Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Text( text = "Hello $name!", modifier = modifier ) } @Composable 어노테이션을 이용하여 Composable 함수 작성 가능 어노테이션의 의미는 컴파일러에게 이 함수가 트리의 한 노드로 작동할 것이라는 의도 전달 함수에서..
Update 24.03.31 IR - Intermediate Representation Koltin 컴파일러가 소스파일을 해석하는 하나의 과정 Positional Memoization 위치 기억법 Compose에서 사용하는 런타임 최적화 방식을 지칭
Hilt 정의 및 기본 설정 프로젝트에서 종속 항목에 대해서 수동으로 삽입하는 코드를 줄이는 Android용 종속성 주입 라이브러리 모든 클래스와 종속 항목을 수동으로 구성 컨테이너를 사용하여 종속 항목을 재사용 및 관리 모든 Android 클래스에 컨테이너 제공 및 수명 주기 자동 관리 Hilt 목표 공식 문서 기반 표현 Android 앱을 위한 Dagger 관련 인프라 간소화 앱 간의 설정, 가독성 및 코드 공유를 용이하게 하기 위한 표준 구성요소 및 범위 세트 생성 테스트, 디버그 또는 출시와 같은 다양한 빌드 유형에 서로 다른 결합을 프로비저닝하는 쉬운 방법 제공 Hilt 설정 아래 환경은 Kotlin Domain Specific Language 기반으로 작성 Project Root build.g..
의존성 주입(Dependency Injection, DI) Hilt, Koin 등 다양한 Android DI를 돕는 라이브러리가 존재합니다. 그리고, Android 공식 사이트에서는 각종 편의성을 이유로 DI를 사용하길 권장합니다. 의존성(Dependency) 클래스 참조를 필요로 하는 다른 클래스 관계 A class를 만들기 위해서 B class가 필요한 것 class A(bClass: B = B()) { /* ... */ } class B { /* ... */ } 주입(Injection) 외부에서 객체를 생성하여 다른 객체에게 전달하는 것 Car class의 경우 Tire, Engine 등 다양한 부품을 외부에서 주입받아야함 private class Car( tire: Tire, engine: Eng..
CompositionLocalProvider? 사이드 프로젝트를 진행하면서 아래와 같은 코드를 작성하게 되었습니다. CompositionLocalProvider(LocalAnalyticsHelper provides analyticsHelper) { FakeGpsTheme( darkTheme = darkTheme, androidTheme = shouldUseAndroidTheme(uiState), disableDynamicTheming = shouldDisableDynamicTheming(uiState), ) { FakeGpsApp(networkMonitor = networkMonitor) } } 해당 코드에서 CompositionLocalProvider 이 무슨 역할을 해주는지 알아보겠습니다. Compo..