Todo 리스트 애플리케이션을 구현해나가면서 AAC(Android Architecture Component)를 적용해보는 프로젝트입니다.
Ketchup은 할일을 미루지말고 Catch-up하자라는 의미에서 붙인 이름입니다.
마지막에 케첩 아이콘을 테마로 디자인 해볼 생각입니다. 😄
아직 개발진행중인 미완성 프로젝트입니다.
개발목적
- MVVM 아키텍쳐와 LiveData를 사용합니다.
- Room 데이터베이스를 사용합니다.
- Dagger를 사용해 DI 시스템을 도입합니다.
- Notification의 동작을 이해합니다.
- RecyclerView의 동작을 이해합니다.
아키텍쳐
- Model
- Repository 모듈을 도입해 데이터에 접근하는 유일한 통로로 역할을 분담합니다.
- 할일(Task) 자료는 Room 데이터베이스에 저장됩니다.
- View
- AAC의 Navigation Component를 활용합니다.
- Single Activity - Multi Fragments 구조를 사용합니다.
Navigation Component는 Activity와 Fragment의 화면 전환에 도움을 받을 수 있는 라이브러리이고 안드로이드 스튜디오에서 쉽게 화면 구성을 그래픽으로 확인 할 수 있어서 적극 도입했습니다.
위 그림의 NavHostFragment 영역에 자식 프래그먼트들이 전환되어 사용되어집니다.
- ViewModel
- View와 Model을 이어주는 중간자 역할입니다.
- 하지만 Presenter와 다르게 View에 대한 참조를 전혀 갖고있지 않습니다.
- LiveData 홀더에 요청받은 데이터를 담으면, View의 옵저버에서 LiveData의 갱신된 데이터를 사용하는 구조입니다.
기존 프로젝트에서 사용했던 Presenter구조는 사용하기전에 정의해야할 인터페이스의 양이 많았는데 ViewModel의 구조는 LiveData와 함께 사용시 적은 양의 코드로 같은 로직 분리를 실현할 수 있었습니다.
- DI 구조
구현화면
라벨 색상으로 할 일을 분류할 수 있도록 구현하였습니다.
등록된 할 일은 데드라인 시간에 맞춰 자동으로 분류되는 시스템을 적용했습니다.
오늘 할일과 내일 할일에 조금 더 집중할 수있도록 사용자에게 적극 알려줄 수 있도록 하기 위함입니다.
많은 수의 할 일이 저장되었을 때 쉽게 스크롤하여 찾을 수 있도록 리사이클러뷰의 아이템을 접을 수 있도록 구현하였습니다.