Example MVI implementation, based off of Google's architectural samples.
This is a sample implementation of the Model View Intent pattern. Full Android examples for MVI are hard to find.
Target audience include, but not limited to:
- Developers making the pivot from an imperative to declarative style of programming.
- Developers looking for working example of functional or reactive programming on Android.
Here are some articles/examples explaining the core principles of MVI and unidirectional flow:
Key Application Components
- ModelStore.kt: a generic Model Store inspired by Redux
- Intent.kt: basic DSL for building Intents and Reducers for generic types.
- TaskEditorState.kt: sealed class + reducer based state machine.
One goal of this repo is to keep things as light as possible. The core libraries used are:
- RxJava 2
- Toothpick DI
If you require a very lightweight project, and still want to do MVI, it's not unreasonable to think you could do without RxJava. As of writing, RxJava dependencies weighs in at about ~2MB.
Once you grasp the basics, I suggest you explore the following existing libraries: