Offline App (or Offline-First App) enables user to seamlessly interact with it by using local device storage and then synchronizing the data with some remote storage (cloud database, etc) later via a background process.
- Patterns and frameworks
- MVVM (Model-View-ViewModel) using Google's new Architecture components
ViewModel
,LiveData
,LifecycleObserver
, etc. - Clean Architecture with
ViewModel
interacting with UseCases and the latter interacting with local database. Making each layer highly testable.
- MVVM (Model-View-ViewModel) using Google's new Architecture components
- Database
- Room Persistence Library, part of Google's new Architecture components.
- Background Job processing
- Android Priority JobQueue which uses Job Scheduler for API level Lollipop and above and GcmNetworkManager for API level below Lollipop.
- Remote Call APIs
- Retrofit 2 to perform HTTP requests.
- Fake remote database using simple JSONPlaceholder REST API.
- Dependency Injection
- Dagger Android 2.11 to manage App and Activity-scoped dependencies.
- Communication between app layers
- Other
- ButterKnife to simplify View and Listener bindings.
- Travis CI is used for automating continuous integration.
- The following quality checks are configured: checkstyle, pmd, findbugs, lint and RxLint. You can perform all of them at once by executing
./gradlew check