| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 안드로이드 갤러리 접근
- 영어독립365
- android recyclerview
- 영어공부
- Kotlin FCM
- Android ViewPager2
- WebView
- 카카오 알고리즘
- Android Navigation
- 안드로이드 카카오 로그인
- 프로그래머스 알고리즘
- 코틀린 코루틴
- scope function
- Android 12
- OkHttp Interceptor
- Android 12 대응
- 안드로이드
- Android
- 알고리즘 자바
- Android Interceptor
- 습관만들기
- Android WebView
- Android Jetpack
- DataBinding
- Kotlin
- Android ProgressBar
- MVP Architecture
- Java
- coroutine
- 66챌린지
- Today
- Total
목록2025/11 (11)
나미래 Android 개발자
Compose에서의 NavigationNavigation Component는 Jetpack Compose 앱에서도 사용할 수 있다.이를 통해 Composable 간 화면 이동을 구현하면서 Navigation Component가 제공하는 인프라와 기능을 그대로 활용할 수 있다. 프로젝트 설정Compose에서 Navigation을 사용하려면, app 모듈의 build.gradle 파일에 아래 Navigation 관련 의존성을 추가해야 한다.dependencies { val nav_version = "2.9.6" implementation("androidx.navigation:navigation-compose:$nav_version")} 시작하기Navigation을 사용할 때, navigation ..
Navigation 개요Navigation은 사용자가 앱 내의 다양한 콘텐츠 사이를 이동하고, 특정 화면으로 진입하거나 이전 화면으로 돌아가는 모든 상호작용을 의미한다. Jetpack의 Navigation Component는 Navigation 라이브러리, Safe Args Gradle 플러그인, 그리고 내비게이션 구현을 지원하는 여러 도구들로 구성된다. Navigation Component는 단순한 버튼 클릭 내비게이션부터 앱바나 내비게이션 드로어 같은 복잡한 패턴까지 다양한 내비게이션 유즈 케이스를 지원한다. Navigation 핵심 개념아래 표는 Navigation의 핵심 개념과 이를 구현할 때 사용되는 주요 타입을 정리한 것이다.ConceptPurposeTypeHostHost는 현재 네비게이션 대..
LaunchedEffect, 언제 왜 사용할까?Jetpack Compose를 사용하다보면, suspend 함수 호출, 네비게이션, 스낵바 노출, Flow collect처럼 UI 선언을 넘어서는 작업이 필요할 때가 있다. 하지만 Composable은 예측 불가능한 시점에, 예측 불가능한 순서로 다시 실행될 수 있는 구조다. 이런 환경에서 네트워크 요청이나 navigation 같은 외부 작업을 Composable 내부에 직접 넣으면 중복 실행, 타이밍 오류, 취소 문제, 메모리 누수 등의 문제가 발생할 수 있다. 그래서 Compose는 이러한 작업을 안전하게 수행하기 위해 Effect API들을 제공한다. 그중에서도 가장 많이 사용되는 것이 바로 LaunchedEffect다. Compose에서의 Side-e..
왜 Application에서 ImageLoaderFactory를 구현할까?Now In Android의 NiaApplication에서는 다음과 같이 Coil의 ImageLoaderFactory를 상속받고 있다.@HiltAndroidAppclass NiaApplication : Application(), ImageLoaderFactory { @Inject lateinit var imageLoader: dagger.Lazy ...}과연 왜 NiaApplication에서는 ImageLoaderFactory를 상속받아서 newImageLoader() 함수를 override 했을까?문제 상황Coil 이미지 로딩 라이브러리를 사용할 때, 기본 설정만으로는 SVG 파일을 로드할 수 없다. Now In ..
Composable 생명주기이 글은 안드로이드 공식 문서 중 CORE AREAS > UI 내용을 기반으로 학습하여 작성했습니다.ref). 공식 문서 상태 관리 가이드에서 언급되듯, Composition은 Composable 함수 실행 결과로 구성되는 UI 트리 구조를 갖고 있다. Jetpack Compose는 Composable을 실행해 이 UI 트리를 만들어내고, 이를 기반으로 화면을 렌더링한다. Initial CompositionJetpack Compose가 Composable을 처음 실행할 때, UI를 구성하기 위한 초기 Composition이 생성된다. 이 과정에서 Compose는 어떤 Composable이 호출되었는지, Composable들이 어떤 UI 구조를 이루는지를 모두 기록해 Compos..
Composition·Composable·Composition 관계 정리Jetpack Compose를 처음 학습하면 가장 먼저 마주하는 개념이 있다. 바로 Compose, Composable, Composition 이 세 가지다.단어 형태도 비슷하고, 공식 문서에서도 계속 반복되기 때문에 정확히 구분해야지만 Jetpack Compose 전반의 구조가 선명해진다.1. 관계 개요다음 그림은 Compose, Composable, Composition 관계를 나타낸 것이다.Compose는 전체 UI 시스템을 관리하며, 그 내부에는 여러 개의 Composition이 동시에 존재할 수 있다.각 Composition은 하나의 setContent {} 호출 또는 하나의 ComposeView를 통해 생성되며, 해당 UI..
아키텍쳐 개요NIA 앱의 아키텍쳐는 3가지 레이어(data layer, domain layer, UI layer)를 갖는다.참고공식적인 안드로이드 아키텍쳐는 "Clean Architecture"와 같은 다른 아키텍쳐들과 다르다. 다른 아키텍쳐에 대한 개념이 적용되지 않을 수 있고, 다른 방법으로 적용되기도 한다. ref). 관련 논의 내용 NIA 아키텍쳐는 UDF(Unidirectional Data Flow) 반응형 프로그래밍 모델을 따른다.data layer가 가장 아래에 위치하며, 핵심 개념은 다음과 같다.상위 레이어는 하위 레이어의 변화에 반응한다.이벤트(Event)는 상위 -> 하위 레이어로 내려간다.데이터(Data)는 하위 -> 상위 레이어로 올라간다.이러한 데이터 흐름은 Kotlin Flows..
Android 개발을 위한 Hilt 컴포넌트 이해Dagger에서는 개발자가 직접 Component를 정의해야 하지만, Hilt는 Android 생명주기에 대응되는 표준 컴포넌트를 자동으로 생성한다. 즉, 개발자는 @AndroidEntryPoint와 같은 어노테이션을 마킹하면 되고 Hilt 컴포넌트 자체를 직접 정의하거나 인스턴스화 할 필요가 없다.Hilt 컴포넌트 계층 구조Hilt의 컴포넌트는 Android 구조처럼 계층을 가진다. 이미지에서 볼 수 있는 각 컴포넌트 위에 있는 어노테이션은 스코프 어노테이션으로 해당 컴포넌트 생명주기에 대한 의존성을 지정할 때 사용한다.화살표는 상위 컴포넌트를 가르키고 있는데, 하위 컴포넌트는 상위 컴포넌트의 바인딩에 접근할 수 있다. 하지만 반대의 경우로 상위 컴포넌트..