This talk will cover how to think about Architecture, some recommended principles, and how we implemented the modern Android architecture guidance in the Now in Android open-source app. This enabled us to build a scalable, flexible and testable app which supports a reactive programming style and allows multiple developers to work on features independently.

We’ll show how data is produced by the data layer and transformed into UI state, and how that state is consumed by the UI layer using Unidirectional Data Flow (UDF). We’ll also discuss the relationship between the UI states, state holders and UI elements, the different types of state holders and their use cases, as well as the handling of UI events.