코드를 구현하면서 by키워드를 사용해 변수를 선언한 적이 많다. 특히 뷰모델을 사용하게 되면서by viewModels 를 사용해 뷰모델을 선언 했었다.그런데 다시 코드를 읽다 보니 그래서 by가 무슨 역할을 하는거지? 라는 생각이 들어서 학습해 보기로 했다.디자인 패턴
데이터를 다루는데 최적화된 형태로 코틀린에서 제공하는 클래스형태이다.데이터 클래스는 아래의 요건을 충족하여야 한다.기본 생성자는 1개 이상의 매개변수를 가져야 한다.모든 기본 생성자 매개변수는 val 또는 var로 선언해야 한다.abstract, open, sealed
String은 불변객체이다. 한번 생성된 String은 내용을 바꿀 수 없다.String은 불변 객체이기 때문에 String객체와 String객체를 더하면 (+연산) 새로운 문자열이 생성된다.이 과정에서 새로운 메모리를 할당하고 해제가 발생하여 연산이 많아질수록 성능적
JVM에서 변수를 저장하게 되면 해당 변수는 Heap영역에 저장된다.String도 마찬가지로 Heap에 저장되지만 자주 사용되는 타입인 만큼 특별한 방식으로 저장된다.String 변수를 선언하면 우선 String Constant Pool에 해당 변수가 존재하는지 먼저
의존이란 각각의 클래스가 다른 클래스를 알고있는 관계를 말한다.ViewModel을 Firebase에 의존하지만 Firebase는 ViewModle을 알지 못한다.이때 어떤 문제가 생길까?새로운 repository 클래스를 생성하여 새로 구현해야 한다.이러한 문제는 인터
코루틴 상에서 리액티브 프로그래밍을 지원하기 위한 구성요소데이터가 변경될 때 이벤트를 발생 시켜 데이터를 계속 전달하도록 하는 프로그래밍 방식기존의 명령형 프로그래밍에서 데이터의 소비자는 데이터를 요청한 후 받은 결과를 일회성으로 수신한다.이러한 방식은 데이터가 필요할
Flow는 Coroutine에서 Reactive한 프로그래밍을 할 수 있도록 만들어진 데이터 파이프라인이다.collect의 인자로 들어가는 action 블록은 flow에서 발행된 데이터를 순차적으로 받아 suspend fun을 수행한다.하지만 이 collect를 잘못
Flow는 데이터의 흐름이다. Flow는 흐름만 발생시킬 뿐 데이터가 저장되지 않는다.따라서 Flow만을 사용하여 안드로이드의 UIState를 업데이트 하는 것을 불가능 하다.이를 해결하기 위한 방법이 2가지가 있다.화면이 재구성 될 때마다 새로 데이터 가져오기Flow