wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Android/Study 9

🚀 Jetpack Compose 1.2 안정화 단계 출시 (Jetpack Compose 1.2 is now stable!)

Android Developers Blog의 게시글을 번역 및 요약하였습니다. Jetpack Compose 1.2 is now stable! Posted by Jolanda Verhoef , Android Developer Relations Engineer Today, we’re releasing version 1.2 of Jetpack Compose , Android's m... android-developers.googleblog.com 👀 개요 오늘, 안드로이드의 현대적이며 네이티브 툴킷인 Jetpack Compose 1.2 버전을 출시하며 로드맵을 쌓아 올리고 있습니다. 이번 릴리즈는 downloadable fonts와 lazygrids 그리고 태블릿과 Chrome OS 에 대한 더 나은 focu..

Android/Study 2022.09.06

🌊 Flow Api 안드로이드 라이브러리 파헤치기

Flow를 소개하기 전에 Undirectional Data Flow https://uzun.dev/132 안드로이드 단방향 데이터 플로우 Undirectional Data Flow (UDF) 단방향 Data Flow란 안드로이드 앱에서 상태는 사용자 이벤트에 대한 응답으로 업데이트가 이루어진다. Event : 사용자 또는 프로그램의 다른 부분에 의해 생성됨 Update State : 이벤트 핸들러가 UI 에 uzun.dev 단방향 데이터 흐름 패턴을 모른다면 위 포스팅을 먼저 읽고 가면 도움이 될 것이다. 💡 Live Data (AAC)란? View가 ViewModel을 관찰할 때, 그 관찰 대상이 되는 데이터 홀더 클래스 Activity, Fragment 및 Services와 같은 구성요소에서 관찰할 ..

Android/Study 2022.08.20

⚔️ Dagger Hilt 안드로이드 DI 라이브러리 알아보기

Dependency Injection이란? https://uzun.dev/133 Dependency Injection 의존성 주입이란? DI 의존성 주입이란? 하나의 객체가 다른 객체의 의존성을 제공하는 기술. 외부에서 의존 객체를 생성하여 넘겨주는 기법을 의미한다. 일반적인 객체 생성은 클래스 안에서 사용할 객체를 생성 uzun.dev 의존성 주입의 개념을 모른다면 먼저 위 포스팅을 읽어 보자. Dependency Injection in Android 의존성 주입은 최근 안드로이드 개발환경에 있어서 가장 주목받는 디자인패턴 중 하나이다. 각종 컴포넌트 간 의존성이 상당히 강한 안드로이드 프레임 워크에서 클래스간 의존도를 낮추는 것은 매우 중요하다. 인스턴스를 클래스 외부에서 주입하기 위해서 인스턴스에 ..

Android/Study 2022.08.20

💡 안드로이드에서 MVVM 패턴이란?

기존 개발방법의 문제점 (MVC) 예를 들어 간단한 메모 앱을 만들 때 사용자의 입력, 입력값 저장, 불러오기 등의 모든 로직을 Activity에서 모두 처리한다면 기능을 수정하거나 확장할때 모두 갈아엎어야 하는 기현상을 경험할 수 있다. 앱 동작이 많아질 수 록 Activity 자체가 무거워 짐 View와 Model 간의 의존성이 높아져 코드가 복장성을 띔 View의 UI Refresh를 위해 모델을 참조하여 복잡해짐 구현하기는 쉽겠지만 여러 기능들이 분리되지 않고 코드간의 연관성이 너무 밀접해서 유지보수가 힘들어지는 문제를 해결하기 위해 패턴을 사용한다. 프로그램 구조를 적절히 설계하고 기능에 따라 분리해 코드를 작성하는 여러 아키텍처 중 하나인 MVVM 패턴 What’s MVVM MVVM 패턴은 M..

Android/Study 2022.08.20

🏛 클린 아키텍처 in 안드로이드 (Clean Architecture)

What’s Clean Architecture 복잡성을 사진 어플리케이션을 위한 고품질 코드를 작성하려면 상당한 노력과 경험이 필요 어플리케이션은 고객의 요구사항을 충족 & 유연하고 테스트 가능하며 유지관리 가 용이해야함 로버트 C 마틴 엉클밥아저씨는 2012년에 클린 아키텍처 개념을 제시 안드로이드에서의 클린 아키텍처 안드로이드에서 적용되는 클린아키텍처 구조는 Presentation UI, Presenter 및 ViewModel을 포함 화면과 입력에 대한 처리 등 UI와 직접적으로 관련된 부분을 담당 변경되는 일이 잦아 의존성이 없도록 독립적으로 설계해야한다 Domain 어플리케이션의 비즈니스 로직을 포함 (Model과 UseCase) UseCase란 각 개별기능 또는 비즈니즈 논리 단위 한개의 행동을..

Android/Study 2022.08.20

💉 Dependency Injection 의존성 주입이란?

DI 의존성 주입이란? 하나의 객체가 다른 객체의 의존성을 제공하는 기술. 외부에서 의존 객체를 생성하여 넘겨주는 기법을 의미한다. 일반적인 객체 생성은 클래스 안에서 사용할 객체를 생성하지만, DI는 외부에서 객체를 주입 받는 방식이다. 의존성이란? class A { private Test test; fun Foo() { this.test = new Test() } fun Boo() { this.test.do() } } 클래스 A의 Boo() 함수를 호출하기 위해서는 Test 클래스가 필수적이다. → A는 Test 클래스에 의존성을 가진다. 의존성이 생겨나면 코드의 재활용성이 떨어지고, 결합도가 높아져 하나의 클래스를 수정하였을 때의 영향력이 커진다. 💡 의존성은 함수에 필요한 클래스 또는 참조변수에 ..

Android/Study 2022.08.20

📥 단방향 데이터 플로우 Undirectional Data Flow (UDF) 패턴

단방향 Data Flow란 안드로이드 앱에서 상태는 사용자 이벤트에 대한 응답으로 업데이트가 이루어진다. Event : 사용자 또는 프로그램의 다른 부분에 의해 생성됨 Update State : 이벤트 핸들러가 UI 에서 사용하는 상태를 변경 Display State : 새로운 상태를 표시하도록 UI가 업데이트 됨 기존의 구조화 되지 않은 상태 class HelloActivity : AppCompatActivity() { private lateinit var binding: ActivityHelloBinding var name = "" override fun onCreate(savedInstanceState: Bundle?) { binding.textInput.doAfterTextChanged {text..

Android/Study 2022.08.20

💡 Kotlin 코틀린 : DataClass 란?

What’s DataClass 데이터 클래스는 toString(), hashCode(), equals(), copy() 등의 메소드를 자동으로 만들어주는 클래스 data class User( val name: String, val profileImg: String, val age: Int ) 특징 상속 불가 sealed 클래스는 상속받을 수 있음 (인터페이스 구현 불가) 1개 이상의 프로퍼티를 가져야 함 abstract, open, sealed, inner OK 데이터를 저장하기 용이 보일러 플레이트 코드를 줄일 수 있음 사용 copy() 배열 같은 곳에서 하나의 데이터를 단순 필드의 값만 변경하여 추가적으로 사용하고 싶을 때 fun UserProcess() { val user1 = User("Kenne..

Android/Study 2022.08.20

💡 Kotlin 코틀린 : SealedClass 란?

Enum 코틀린에는 당연히 enum 클래스가 존재. enum class Color(val r: Int, val g: Int, val b: Int) { RED(255, 0, 0), ORANGE(255, 165, 0), YELLOW(255, 255, 0), GREEN(0, 255, 0), BLUE(0, 0, 255); fun rgb() = (r * 256 + g) * 256 + b } fun getColorName(color: Color) = when (color) { Color.RED -> "빨강" Color.ORANGE -> "주황" Color.YELLOW -> "노랑" Color.GREEN -> "초록" Color.BLUE -> "파랑" } fun main() { println(getColorName(..

Android/Study 2022.08.20
728x90