분류 전체보기25 [Android] MVVM 패턴(Model-View-ViewModel) 복잡한 로직과 데이터 관리, 그리고 반응형 UI를 효과적으로 다루기 위해서는아키텍처 패턴이 필요합니다. 오늘은 MVVM(Model-View-ViewModel) 아키텍처 패턴에 대해 이야기하고자 합니다. MVVM이란? MVVM(Model-View-ViewModel) 아키텍처 패턴은 코드의 구조를 깔끔하게 유지하고, 테스트를 용이하게 하며, 유지보수를 간편하게 만드는 현대적인 솔루션입니다. MVVM은 앱의 비즈니스 로직과 사용자 인터페이스를 효과적으로 분리함으로써 애플리케이션의 확장성과 유지보수성을 대폭 향상시킵니다. MVVM 장점 코드 분리: 비즈니스 로직과 UI 로직의 철저한 분리로 코드 관리가 용이해집니다. 재사용성: 뷰모델을 통한 로직의 재사용성이 높아지며, 다양한 뷰에서 동일한 뷰모델을 사용할 수 .. 2024. 3. 14. [Android] Retrofit2와 RxJava의 통신 실패 관리 Retrofit2와 RxJava를 함께 사용하면, 비동기 네트워크 요청을 보다 선언적이고 반응형으로 처리할 수 있습니다. 안녕하세요. Android앱 개발 시 네트워크 요청을 Retrofit2과 RxJava 를 많이 이용하는데요. 처음엔 RxJava의 'Throwable'과 Retrofit2의 'Response.isSuccessful() = false인 경우의 차이를 잘 몰랐었어요. 이 글에서는 차이가 무엇인지 설명해보려고 합니다. Retrofit2와 RxJava의 조합 Retrofit2는 HTTP API를 자바 인터페이스로 쉽게 변환해주는 강력한 라이브러리입니다. RxJava와의 결합은 네트워크 요청의 비동기 처리를 더욱 효율적이고 선언적으로 만들어 줍니다. 이 조합을 통해 개발자는 네트워크 상태, 데.. 2024. 3. 13. [Android] Activity Lifecycle 액티비티 생명주기 콜백을 잘못 구현할 경우 발생할 수 있는 문제 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 문제 사용자가 앱을 활발하게 사용하지 않는 경우 귀중한 시스템 리소스가 소비되는 문제 사용자가 앱에서 나갔다가 나중에 돌아왔을 때 사용자의 진행 상태가 저장되지 않는 문제 화면이 가로 방향과 세로 방향 간에 회전할 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제 1. onCreate() Activity가 처음 생성될 때 한 번만 호출됩니다. 필수로 구현해야합니다. 초기화 작업을 수행하거나 UI 구성을 설정합니다. setContentView()를 호출하여 Activity의 사용자 인터페이스 레이아웃을 정의해야 합니다. onCreate()가 완료되면 onSt.. 2024. 3. 8. [Android] App components 앱 구성요소 Android 앱의 필수 구성요소입니다. 각 구성요소는 시스템이나 사용자가 앱에 진입할 수 있는 진입점입니다. Activity(액티비티) 안드로이드 애플리케이션의 사용자 인터페이스(UI)를 담당합니다. 사용자가 상호작용하는 화면 단위를 의미(버튼, 텍스트 필드, 이미지 등 UI요소 포함) 합니다. 사용자 이벤트(예: 버튼 클릭, 화면 터치 등)에 응답하여 작업을 수행합니다. 여러 액티비티를 조합하여 앱의 전체 기능 구현합니다. Services(서비스) 여러 가지 이유로 앱을 백그라운드에서 계속 실행하기 위한 범용 진입점. UI 없이 작업을 수행합니다. 주로 네트워크 호출, 파일 다운로드, 데이터베이스 관리 등 장기 실행되는 작업을 처리하는 데 사용합니다. 다른 구성 요소와 연동하여 실행되거나 독립적으로 .. 2024. 3. 6. [Kotlin] Data class, Sealed class Data class : 데이터를 보유하고 있는 간단한 클래스를 정의할 때 사용 Sealed class : 상태를 효율적으로 관리하고 특정 유형의 클래스 계층을 제한하여 안정성을 높이는 데 사용 Data classes(데이터 클래스) 주로 데이터를 보관하는 데 사용 equals(), hashCode(), toString(), copy() 메서드를 자동으로 생성합니다. 상속 불가 data class Person(val name: String, val age: Int) fun main() { val person1 = Person("Alice", 30) val person2 = Person("Alice", 30) println(person1 == person2) // 출력: true println(person1.. 2024. 3. 6. [Kotlin] Scope functions(let, run, with, apply, also) Scope function(범위 지정 함수)은 객체의 컨텍스트에서 코드 블록을 실행하고 해당 객체를 참조할 수 있는 함수 let, run, with, apply, also 함수 수신 객체 반환 값 확장함수 여부 let it 람다 O run this 람다 O with this 람다 X apply this 객체 O also it 객체 O let nullable한 객체를 안전하게 처리할 때 주로 사용 객체가 null이 아닌 경우에만 코드 블록이 실행 val strNull: String? = null val str: String? = "Hello" val lengthNull = strNull?.let { //실행 안 됨 println("let() called on $it") processNonNullString.. 2024. 3. 5. [Kotlin] object, companion object object : 단일 인스턴스를 관리하거나 특정한 동작을 수행할 때 사용 companion object : 클래스 내에서 정적으로 동작하는 메서드나 변수를 제공할 때 사용 Object 사용 사례 싱글톤 패턴을 구현할 때 사용됩니다. 클래스의 단일 인스턴스를 생성하고 해당 인스턴스를 여러 곳에서 접근할 수 있습니다. 객체 생성이 필요 없는 유틸리티 메서드를 제공할 때 사용됩니다. 이름이 있는 객체를 정의하여 특정한 동작을 수행하고자 할 때 사용됩니다. 특징 클래스 내부에 정의되며, 해당 클래스의 인스턴스가 단 하나만 존재합니다. 싱글톤으로 동작하며, 클래스의 인스턴스 생성 없이 사용됩니다. 멤버 변수와 메서드를 가질 수 있습니다. 사용 예시 object Singleton { var count: Int = .. 2024. 3. 5. 이전 1 2 3 다음