Skip to content
Kotlin, MVI Architecture, Dagger2, Retrofit2, Coroutines, Room Persistence, REST API, Token Authentication
Kotlin
Branch: master
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea use activity context instead of fragment Apr 5, 2020
app Fix process death restoration bug caused by ?:sessionManager.logout()… Apr 5, 2020
gradle/wrapper fix smoothscrolltoPosition and update gradle Sep 10, 2019
.gitignore master Jul 16, 2019
README.md Update README.md Oct 26, 2019
build.gradle Process death issue fix: Dec 4, 2019
gradle.properties remove property Mar 9, 2020
gradlew master Jul 16, 2019
gradlew.bat master Jul 16, 2019
settings.gradle master Jul 16, 2019

README.md

Powerful Android Apps with Jetpack Architecture

Watch the video course here: Powerful Android Apps with Jetpack Architecture.

In this course you'll learn to build a real application that interacts with the website open-api.xyz.

Open-api.xyz is a sandbox website for codingwithmitch members to practice interacting with a Rest API.


Prerequisites (Recommended not required):

  1. Dagger 2

  2. MVI Architecture

  3. Database Caching (Retrofit + Room)


What you'll learn:

  • Kotlin:
  • Coroutines:
    1. Advanced coroutine management using jobs
    2. Cancelling active jobs
    3. Coroutine scoping
  • Navigation Components:
    1. Bottom Navigation View with fragments
    2. Leveraging multiple navigation graphs (this is cutting edge content)
  • Dagger 2:
    1. custom scopes, fragment injection, activity injection, Viewmodel injection
  • MVI architecture:
    1. Basically this is MVVM with some additions
    2. State management
    3. Building a generic BaseViewModel
    4. Repository pattern (NetworkBoundResource)
  • Room Persistence:
    1. SQLite on Android with Room Persistence library
    2. Custom queries, inserts, deletes, updates
    3. Foreign Key relationships
    4. Multiple database tables
  • Cache:
    1. Database caching (saving data from network into local cache)
    2. Single source of truth principal
  • Retrofit 2:
    1. Handling any type of response from server (success, error, none, etc...)
    2. Returning LiveData from Retrofit calls (Retrofit Call Adapter)
  • ViewModels:
    1. Sharing a ViewModel between several fragments
    2. Building a powerful generic BaseViewModel
  • WebViews:
    1. Interacting with the server through a webview (Javascript)
  • SearchView:
    1. Programmatically implement a SearchView
    2. Execute search queries to network and db cache
  • Images:
    1. Selecting images from phone memory
    2. Cropping images to a specific aspect ratio
    3. Setting limitations on image size and aspect ratio
    4. Uploading a cropped image to server
  • Network Request Management:
    1. Cancelling pending network requests (Kotlin coroutines)
    2. Testing for network delays
  • Pagination:
    1. Paginating objects returned from server and database cache
  • Material Design:
    1. Bottom Navigation View with Fragments
    2. Customizing Bottom Navigation Icon behavior
    3. Handling Different Screen Sizes (ConstraintLayout)
    4. Material Dialogs
    5. Fragment transition animations

You can’t perform that action at this time.