Skip to content
Arnaud Giuliani edited this page Sep 27, 2018 · 44 revisions

Android Architecture & Architecture Components

The Weather App


Package structure

This project contains the following packages:

  • domain- gather entity domain & repository
  • view - the views of the app
  • data - contains the datasource of the app (remote web services, database ...)
  • util - util classes & extensions
  • di - Koin dependency injection definitions

Views

The app is composed of 3 views:

  • splash - the first screen of the app, that loads the last weather or the default weather
  • weather - main screen of the app, displaying the weather of the day and next days for the given location
  • detail - display one weather data day, chosen from weather view

Tests

Yes, we have some tests :)

  • Unit tests in test folder, contains Presenter/ViewModel mock tests
  • Android instrumented in androidTest folder, will be used for Room part

Offline data

the weather app can work online or offline (see MainApplication). By default, the app is configured as offline. But you can type the following cities in offline mode:

  • Paris
  • Toulouse
  • London
  • Madrid
  • Berlin

The Workshop

Workshop exercises

Follow carefully each exercise and read each step. TODO sections will contain what you will have to do in each part.

Prepare your environment

The project contains all the Gradle dependencies needed for all exercises.

Checkout the master branch and synchronize your project to download all needed dependencies.

Git steps

The project contains the following Git branches:

  • master (start for steps 1.x)
  • end_part1 - end of part 1
  • end_part2 - end of part 2

One tag per step: STEP_1.0 ... STEP_2.3

Make a new branch from master for your work. Each exercise has its own Git commit solution.



Part 1: From MVP to MVVM with Architecture Components

Migrate our MVP architectured app to MVVM with Android Architecture Components

Steps

Part 2: Add database persistence with Room

Make the weather app fully persistent using the Android Architecture Room API

Steps

Clone this wiki locally