Giter Site home page Giter Site logo

flutter-add-to-spweather-android's Introduction

SPWeather

SPWeather is a simple app to check the weather. It uses Kotlin MVVM architecture and Dagger as dependency injection.

Architecture

Below is the whole architecture. Activity and ViewModel use android databinding to bind together. The other layers use callbacks to return results to upper layers.

architecture

Room is used to store persistent data. Inside CityDao.kt, latest is used to return latest 10 cities based on updated timestamp of the inserted rows. upsert is used to insert an new city row, if the city name exists, it will just update the timestamp only.

Kotlin coroutine is used for Room database access, to make sure the database access does not block the main thread execution. All API services are also executed in Coroutine IO threads.

API services use 2 different ways for json deserialization, one is using Kotlin Serializable, another one using jackson library because we don't need to deserialized all the server responsed data.

View layers are tested by instrumentation test using esspresso. Other layers are tested by JUnit tests. kotlinx-coroutines-test library is used to test the Kotlin coroutine.

Test Coverage

A Jacoco test coverage report is provided in the "reports" folder at root of this repository.

Run command to test the test coverage report at folder: "app/build/reports/jacoco/testDebugUnitTestCoverage/html".

gradle clean testDebugUnitTestCoverage

flutter-add-to-spweather-android's People

Contributors

hwdavr avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.