ViewModel의 필요성 안드로이드에서 Activity와 fragment - UI 컨트롤러의 목적 기본적으로 UI 데이터를 표시하거나, 사용자 작업에 반응하거나, 권한 요청과 같은 운영체제 커뮤니케이션을 처리하는 것이다. 이러한 UI 컨트롤러에 데이터 관련 책임을 요구하면 클래스가 팽창되어 다른 클래스로 작업이 위임되지 않고, 단일 클래스가 혼자서 앱의 작업을 모두 처리하려고 할 수 있다. 이렇게 되면 테스트가 훨씬 더 어려워진다. -> 앱의 데이터 또는 데이터에 관한 모든 의사 결정 로직은 UI 컨트롤러 클래스에 포함해서는 안된다. 데이터에 관한 의사 결정 로직을 ViewModel에 추가해야 한다. ViewModel 클래스는 lifecycle을 고려하여 UI 관련 데이터를 저장하고 관리하도록 설계되었..
Room? Room은 AAC(Android Architecture Components)로 간단히 말하면 스마트폰 내장 DB에 데이터를 저장하기 위해 사용하는 라이브러리이다. ORM(Object Relational Mapping) 라이브러리로 DB 데이터를 자바 또는 코틀린 객체로 mapping 해준다. SQLite를 내부적으로 사용하고 있지만, DB를 구조적으로 분리하여 데이터 접근의 편의성을 높여주고 유지보수에 편리하다. 다양한 Annotation을 통해 컴파일 시 코드들을 자동으로 만들어주며 LiveData, RxJava와 같은 Observation 형태를 지원한다. MVP, MVVM과 같은 아키텍쳐 패턴에 쉽게 활용할 수 있도록 되어있다. Room 사용 시의 이점 SQL 쿼리의 컴파일 시간 확인 반..
RecyclerView 여러가지 항목을 나열하는 목록 화면을 만들 때 사용한다. + 리스트뷰는 androidx 라이브러리에서 리사이클러 뷰를 제공하기 시작하면서부터 잘 사용되지 않는다. RecyclerView의 구성요소 ViewHolder: 항목에 필요한 뷰 객체를 가진다. 필수 Adapter: 항목을 구성한다. 필수 LayoutManager: 항목을 배치한다. 필수 ItemDecoration: 항목을 꾸민다. 뷰 홀더는 각 항목을 구성하는 뷰 객체를 가지며 어댑터는 뷰 홀더에 있는 뷰 객체에 적절한 데이터를 대입해 항목을 완성한다. 레이아웃 매니저는 어댑터가 만든 항목들을 어떻게 배치할지 결정하여 리사이클러 뷰에 출력한다. RecyclerView 사용 1. 리사이클러 뷰 선언 그래들 파일의 depend..
MVP란? Model - View - Presenter로 이루어진 디자인 패턴으로 MVC의 View와 Model 사이의 의존성 문제를 해결하기 위해 나왔다. MVP 패턴의 핵심은 뷰와 모델 간의 상호작용을 다른 객체인 Presenter가 담당하도록 함으로 서로 간의 의존성을 최소화하는 것으로 MVC에서 Controller가 하는 역할을 Presenter가 한다고 보면 된다. MVP의 간단한 과정을 살펴보면 1. User Input이 들어오면 2. View는 Presenter에 이벤트를 전달하고 3. Presenter는 이벤트에 맞게 Model을 구성하고 4. 업데이트된 Presenter의 데이터를 View에 업데이트 한다. View, Presenter, Model의 역할 MVP 패턴 구성요소 뷰 view..
뷰 바인딩을 사용하는 이유 코드에서 XML에 입력한 객체를 사용하기 위해 findViewById() 함수를 이용하는 것은 꽤 귀찮은 방법이다. 이 경우 다음과 같이 id 값으로 뷰 객체를 획득하는데 val textView1: textView = findViewById(R.id.text1) 한 화면을 구성하는 데만도 많은 뷰가 필요하고, 뷰는 대부분 코드에서 이용하므로 -> 코드에서 뷰 객체를 선언하고 모두 findViewById() 함수로 하나하나 가져와야 하므로 번거롭다는 단점이 있다. 개발자들이 조금 더 쉽게 레이아웃 XML 파일에 등록된 뷰 객체를 쉽게 사용하기 위해 뷰 바인딩을 이용하게 되었다. 뷰 바인딩(View Binding)이란? 뷰 바인딩은 레이아웃 XML 파일에 선언한 뷰 객체를 코드에서..
MVC 란? 코드에 대한 유지보수를 어떻게 하면 편하게 할 수 있을까를 고민하다가 탄생하게 된 패턴 중 하나로 Model View Controller 약자이다. 이 MVC 패턴을 통해 애플리케이션을 Model, View, Controller 세 가지 역할로 구분함으로 유지보수가 편리하게 이루어지도록 할 수 있다. MVC 패턴 이외에도 MVP 패턴, MVVM 패턴이 있지만 여기서는 우선 가장 간단한 MVC 패턴에 대해 살펴본다. Model, View, Controller의 역할 Model 애플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분, 데이터와 관련된 일을 하는 곳 뷰와 컨트롤러에 의존적이지 않아 재사용 가능 View 사용자에게 보여지는 UI 부분을 담당하는 곳 UI와의 상호작용에서 컨트롤러..