Android

    의존성 주입이란 무엇이며 왜 필요한가?

    목표 의존성 주입이 무엇인지 이해한다. 의존성 주입이 왜 필요한지 이해한다. 의존성 주입이란? 의존성 주입이란 클래스간 의존성을 클래스 외부에서 주입하는 것을 뜻한다. 의존성 주입 그 자체는 클래스간 의존성을 외부에서 주입하는 것을 뜻하지만, 일반적으로 우리가 사용하는 의존성 주입은 클래스에 대한 의존성의 인터페이스화를 통한 코드 유연성 증대 + 클래스의 인스턴스를 외부에서 생성하여 주입 을 동시에 하는 방향으로 진행된다. 아래에서 의존성이 무엇인지 왜 인터페이스화를 하는 것이 필요한지부터 살펴보자. 의존성이란 무엇이며 어떻게 유연하게 만들 수 있는가? 객체 지향 프로그래밍에서 클래스간에 의존성이 있다는 것은 클래스간에 의존 관계가 있다는 것을 뜻한다. 즉, 클래스 간에 의존(Dependency) 관계가..

    Android Activity Lifecycle 정리하기 : 화면이 회전될 때 Activity Lifecycle은 어떻게 변화하는가? Activty 위에 다른 Activity가 실행될 때 Lifecycle은 어떻게 변화하는가?

    목표 Activity의 Lifecycle에 대해 이해한다. 각 수명주기에 해당하는 메서드가 언제 호출되는지 알아야 한다. 개요 안드로이드의 리소스 제한으로 인해 Activity는 항상 살아있지 못한다. Activity는 Activity가 보여주는 화면(View)이 화면 상에서 뒤로 가거나, 화면 상에서 사라지게 될 경우 특정한 메서드를 호출하게 되는데, Activity의 Lifecycle은 Activity가 각 상황에서 어떤 메서드를 호출하는지를 알려준다. Activity Lifecycle onCreate() Activity가 시작될 때 불림 onStart() Activity가 보이기 전에 불림 Broadcast Receiver은 여기서 등록한다. onResume() Activity 일부가 보일 때 불림..

    Android MVVM 아키텍처 구성과 의의를 View Model을 중심으로 알아보자.

    목적 MVVM 아키텍처의 각 부분이 어떤 역할을 하는지 안다. MVVM 아키텍처의 의의를 이해한다. MVVM 아키텍처 개요 MVVM 아키텍처는 View, View Model, Model 세가지로 나뉜다. 1. View : UI 클래스 - Activity와 Fragment View는 말 그대로 보이는 것이다. View의 가장 대표적 class인 Activity는 UI를 포함한 화면 하나를 가지고 있다. Activity나 Fragment와 같은 요소에서는 사용자에게 UI를 보여주며, 사용자와 소통하는 채널이 된다. View에서는 아래 ViewModel의 데이터를 관찰(Observe)하여 데이터 변경이 있을 시, View를 업데이트 시킨다. 보통 View를 업데이트 시킬 때 Data Binding Librar..

    Android MVVM 아키텍처의 등장 배경과 필요성

    목적 MVVM 아키텍처가 등장하게 된 배경을 이해한다. MVVM 아키텍처의 필요성을 이해한다. MVVM 아키텍처의 등장 배경 안드로이드의 아키텍처는 크게 MVC, MVP, MVVM 3가지로 나뉜다. 아키텍처는 MVC, MVP, MVVM 순서로 나왔는데 각각은 이전 아키텍처를 개선하여 나온 것이다. 어떤 점에서 한계점이 있었고, 어떤점이 개선되었는지 아래에서 각각의 특징을 살펴보자. MVC : View와 Controller를 Activity, Fragment 클래스에서 담당 각 클래스가 강하게 결합되어 있을 경우, 한 클래스가 변경되면 다른 클래스 또한 같이 변경되어야 하기 때문에 유지보수 하기가 어렵다. 웹에서 널리 사용되었던 MVC 아키텍처에서는 안드로이드에서 사용하기 위해서 View단과 Control..

    [LiveData] LiveData를 활용해 옵저버 패턴 구현하기

    목표 LiveData가 무엇인지 안다. LiveData의 setValue와 postValue의 차이점에 대해 안다. 개요 LiveData는 수명주기를 인식하는 데이터 발행자(Observable)이다. 발행자(Observable, Publisher) 리액티브 프로그래밍에서 발행자는 자신에게 붙은 구독자(subscriber)에게 데이터를 발행해주는 역할을 한다. LiveData는 수명주기를 인식하여 옵저버(observer)에게 데이터를 발행한다. 즉, LiveData는 발행자이며, 옵저버(observer)라 불리는 구독자(subscriber)을 붙일 수 있다. LiveData의 데이터가 바뀔 때 LiveData에 붙은 구독자들에게 데이터가 발행된다. 하지만, 기존 리액티브 프로그래밍과 다르게 LiveData..