An Android sample application implemented using MVVM pattern, Retrofit2, LiveData, ViewModel, Coroutines, Room, Rx-Java, Navigation Components and Data Binding.
The architecture of this application relies and complies with the following points below:
- A single-activity architecture, using the Navigation Components to manage fragment operations.
- Pattern Model-View-ViewModel(MVVM) which facilitates a separation of development of the graphical user interface.
- Android architecture components which help to keep the application robust, testable, and maintainable.
- Retrofit a REST Client for Android which makes it relatively easy to retrieve and upload JSON (or other structured data) via a REST based webservice.
- ViewModel to store and manage UI-related data in a lifecycle conscious way.
- RxJava used in the the network section of the project to perform network calls asynchronously. RxJava helps in composing asynchronous and event-based programs using observable sequences.
- LiveData to handle data in a lifecycle-aware fashion.
- Navigation Component to handle all navigations and also passing of data between destinations.
- Timber - a logger with a small, extensible API which provides utility on top of Android's normal Log class.
- Coroutines used to manage the local storage i.e.
writing to and reading from the database
. Coroutines help in managing background threads and reduces the need for callbacks. - Data Binding to declaratively bind UI components in layouts to data sources.
- Room persistence library which provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
Dog Pool requires a minimum API level of 23. Clone the repository and run.
All contributions are welcome! Simply make a PR.