본문 바로가기

개발일지/Android

(6)
[Android] 클린 아키텍처 VS 구글 권장 아키텍처, MVVM 패턴 🫧 클린 아키텍처 로버트 C. 마틴에 의해 소개된 소프트웨어 시스템의 구조를 설계할 때 지켜야 할 원칙과 방법을 정의한 개념 소프트웨어의 유지보수성, 테스트 용이성 및 모듈 간의 분리를 강조하여 안드로이드 애플리케이션을 더 구조화된 방식으로 개발할 수 있도록 돕는다. 구글 권장 아키텍처와 차이점이라고 한다면, 도메인 레이어를 필수로 설계해야 한다는 것 각 계층이 분리되어 있고 계층 간 의존성이 낮아 유지보수가 쉬움 의존성을 주입하여 유닛 테스트 및 통합 테스트를 수행하기 용이 각 계층이 자체 역할을 하여 코드의 재사용성이 높아짐 🕶️ 구글 권장 아키텍처 Google에서 공식적으로 권장하는 Android 앱 개발 방법론 Clean Architecture 와 비슷하게 구성될 순 있지만, 단 1가지의 차이점이..
[Android] Jetpack Compose ViewModel 추가 ViewModel을 사용하면 액티비티가 소멸되고 다시 생성될 때 폐기되지 않는 앱 관련 데이터를 저장한다. 즉, ViewModel 객체는 소멸되지 않는다. 앱은 자동으로 ViewModel 객체를 유지하므로 객체가 보유하고 있는 데이터를 재구성하여 즉시 사용할 수 있다 아키텍처 구성요소 라이브러리에서 가져온 ViewModel 클래스를 확장하고 이 클래스 내에 앱 데이터를 저장하여 ViewModel 을 구현한다! 1. 종속성 추가 implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1") Compose 앱에 수명 주기 인식 ViewModel을 추가하는 데 사용된다. 2. 클래스 생성 ui 패키지에 ViewModel 클래스를 만든다. impo..
[Android] Compose - 이미지, 구분선, 텍스트, Preview, Button, 툴바 이미지 Image( painter = painterResource(id = R.drawable.ic_message), contentDescription = "공지사항 아이콘", Modifier .width(25.dp) .height(25.dp) ) Image의 painter로 리소스 불러오기 4px로 png 저장해도 깨짐 현상 없음! 구분선 // 구분선 Divider( color = Color.Black, modifier = Modifier.fillMaxWidth() .height(1.dp) .padding(start = 8.dp, end = 8.dp) ) 공식문서를 참조했다 Compose 레이아웃의 내장 기능 측정 | Jetpack Compose | Android Developers Compose 레이..
[Android] 클린 아키텍처 (Clean Architecture) 안드로이드 공식 홈페이지의 아키텍처 권장 가이드에서 "관심사의 분리"를 강조한다 UI Layer, Domain Layer, Data Layer 3가지 레이어의 역할에 대해 공부해보자 위 Layer 모듈들은 단방향의 참조를 한다 단방향 데이터 흐름이란? 데이터가 오로지 한 방향으로만 흐르는 것 ex) 사용자의 클릭 이벤트 발생 - Up Stream : Ui -> Domain -> Data 상위 레이어로 전달 - Down Stream : Data -> Domain -> Ui 하위 레이어로 전달 UI Layer UI Layer에 해당하는 모듈 - UI Elements Module : Activity/Fragment + xml view / Compose UI - UI State Holder Module : Vi..
[Android] Retrofit2 활용하여 API 연동 실전 예제 1. 종속성 추가 Retrofit /* Retrofit */ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' /* OkHttp */ implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.2' 2. Manifest 인터넷 권한 설정 안드로이드에서는 http 지원 X → API 주소가 http일 경우 추가 **** 3. RetrofitClient 생성 baseURL은 꼭 ‘/’ 로 마쳐야 오류가 나지 않는다 Object 파일 RetrofitClient.kt package com.example.tavecon..
[Android] 4대 컴포넌트와 Intent 4대 컴포넌트 안드로이드 앱은 4대 컴포넌트로 이루어져 있다 각 컴포넌트 별 공통적인 특징은 1. 각 컴포넌트들은 하나의 독립적인 형태로 존재한다. 2. 각 컴포넌트들은 고유의 기능을 수행한다. 3. 각 컴포넌트들은 인텐트를 통해 서로 상호작용한다. 1. Activity (액티비티) : 사용자가 애플리케이션과 상호작용하는 단일화면 모든 안드로이드 애플리케이션은 액티비티로 구성되어 있다 사용자와의 상호작용을 담당하는 인터페이스 안드로이드 애플리케이션은 반드시 하나 이상의 액티비티를 포함하고 있고, 액티비티는 생명주기(Life Cycle) 관련 메서드들을 재정의 하여 원하는 기능을 구현할 수 있다 - Intent를 통해 다른 애플리케이션의 액티비티 호출 가능 - 2개 이상의 액티비티를 동시에 표기할 수 없다..