Book Image

Clean Android Architecture

By : Alexandru Dumbravan
Book Image

Clean Android Architecture

By: Alexandru Dumbravan

Overview of this book

As an application’s code base increases, it becomes harder for developers to maintain existing features and introduce new ones. In this clean architecture book, you'll learn to identify when and how this problem emerges and how to structure your code to overcome it. The book starts by explaining clean architecture principles and Android architecture components and then explores the tools, frameworks, and libraries involved. You’ll learn how to structure your application in the data and domain layers, the technologies that go in each layer, and the role that each layer plays in keeping your application clean. You’ll understand how to arrange the code into these two layers and the components involved in assembling them. Finally, you'll cover the presentation layer and the patterns that can be applied to have a decoupled and testable code base. By the end of this architecture book, you'll be able to build an application following clean architecture principles and have the knowledge you need to maintain and test the application easily.
Table of Contents (15 chapters)
1
Part 1 – Introduction
6
Part 2 – Domain and Data Layers
10
Part 3 – Presentation Layer

Introducing MVI

In this section, we will look at what the MVI architecture pattern is, the problems it is trying to solve, and the solutions it presents for solving those problems.

Let's imagine you need to develop a configuration screen for an application. It will load the existing configuration and it will need to toggle various switches and prepopulate input fields with the existing data. After that data is loaded, then the user can modify each of those fields. To achieve this, you would probably need to keep mutable references for the data represented in those fields so that when the user changes a value, the reference changes.

This may pose a problem because of the mutability of those fields, especially when dealing with concurrent operations or their order. A solution to this problem is to make the data immutable and combine it into a state that the user interface can observe. Any changes the app or user will need to make on the user interfaces will be through a reactive...