Movies app illustrating Android development best practices with Android Jetpack.
For development, the latest version of Android Studio is required. The latest version can be downloaded from here.
This project uses the Gradle build system.
To build this project, use the gradlew build
command or use Build
command in Android Studio.
App uses Square coding styles. Here's how to configure it for use with Android Studio (instructions adapted from Sqaure README)
![]() |
![]() |
![]() |
---|
Model–View–Intent (MVI) is one of the newest architecture patterns for Android, inspired by the unidirectional and cyclical nature of the Cycle.js framework.
MVI works in a very different way compared to its distant relatives, MVC, MVP or MVVM. The role of each MVI components is as follows:
- Model represents a state. Models in MVI should be immutable to ensure a unidirectional data flow between them and the other layers in your architecture.
- Like in MVP, Interfaces in MVI represent Views, which are then implemented in one or more Activities or Fragments.
- Intent represents an intention or a desire to perform an action, either by the user or the app itself. For every action, a View receives an Intent. The Presenter observes the Intent, and Models translate it into a new state.
Repository modules handle data operations. They provide a clean API so that the rest of the app can retrieve this data easily. They know where to get the data from and what API calls to make when data is updated. You can consider repositories to be mediators between different data sources, such as persistent models, web services, and caches.
- Retorift Used for API requests
- Room Used for database
- Dagger 2 Used for dependency injection
- Glide Used for image loading
- Navigation Handle everything needed for in-app navigation