- A Movie Application uses TheMovie API based on Kotlin MVVM architecture and material design.
- A single-activity pattern, using the Navigation component to manage fragment operations.
- Reactive UIs using LiveData observables and Data Binding.
- Handles background tasks using Executors for the master branch, coroutines + Flow for the 2nd and 3th branch and RxJava for 4th branch.
- It consists of 16 fragments which are fully tested by Espresso.
- 100% Kotlin + Coroutines + Flow
- MVVM Architecture
- Architecture Components (Lifecycle, LiveData, ViewModel, DataBinding, Navigation, Room with FTS4)
- TheMovie API
- Dagger2 for dependency injection
- Retrofit2 & Gson for REST API
- Glide for loading images
- RxJava for the 4th branch
- LeakCanary for detecting memory leak
- Mockito-kotlin for Junit mock test
- Espresso for UI testing
- Timber for logging
Sample | Description |
---|---|
master | The base for the rest of the other branch. Uses Kotlin, Architecture Components, AppExecutors, Dagger, Retrofit Data Binding, etc. and uses Room as source of truth, with a reactive UI. |
coroutines-flow | Same like the master branch but much better as it uses coroutines Flow (single source of truth with Flow). For testing coroutines Flow check Tandem Repository. |
paging3-network | This branch uses Paging3 library to handle paging, it is wayyy easier. |
paging3-rxjava | This branch uses RxJava2 with the Paging3 library as well as ViewBinding instead of kotlin synthetic. |
Copyright 2020 The Android Open Source Project, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.