Showcase common android implementation with MyAPIFilms IMDB API. This app shows “IN THEATERS” movie list on main page, and shows clicked movie details on next page.
From this project you should find useful examples like,
- Build android with MVVM design pattern + ViewModel + LiveData
- Use Dependency Injection (Dagger2) to separate configuration (properties, imageClient, httpClient, etc.) and UI usage
- Use Butterknife for view injection in Activity/Fragment
- Use Retrofit2 and Moshi to call RESTful API and parse returned JSON response
- RxJAVA as Retrofit2 call adapter
- Glide as image client
- Define productFlavors in gradle script
- Read properties from /res/raw resource (However, BuildConfig is preferable)
How to save/restore Fragment's state-> No need thanks to ViewModel- Use RecyclerView and CardView
- Two different Dagger setups for debug and release
- LeakCanary to find memory leak EARLY
- OkHttp Logging Interceptor
- Stetho - A debug bridge to Chrome browser
- Checkstyle, Findbugs, PMD and Lint for static code analysis
- Unit test with JUnit, Mockito and Robolectric in JVM
In this project, run check to ensure code quality in the following order: Checkstyle -> Findbugs -> Lint -> PMD -> Unit Tests. You should find all configuration files under config/quality/..
./gradlew check
- Introduction to MVP on Android
- Architecting Android… The clean way?
- Dependency Injection with Dagger 2
- Keeping the Daggers Sharp
- Dagger 2 on production — reducing methods count
- Dagger 2. Custom scopes, Subcomponents
MVP-> see branch mvpMVVM + Data binding-> see branch dataBindingRxJava/RxAndroid- Kotlin + Coroutines