A toy app created when preparing for the AADC Exam
- Implement the MVVM Architecture Pattern
- Mediate data operations with the Repository Pattern
- Observe and respond to changing data using LiveData.
- Persist data with Room
- Manage long-running tasks with Kotlin coroutines
- Handle app navigation with Navigation Component and SafeArgs
- Display Menus and handle menu-based navigation
- Add a navigation drawer and implement drawer navigation
- Schedule Notifications with WorkManager
- Bind local data to a RecyclerView list using the Paging Library
- Handle user preferences with a Settings screen and SharedPreferences
- Use the Service Locator design pattern to handle class dependencies.
- Build local unit tests for the repository using test doubles (a fake local data source)
- Build local unit test for the existing app view models using test doubles (a fake repository), since almost each view model depends on a tasks repository.
- Add local instrumented tests for Room's DAO and integration tests for the local data source.
- Add integration tests for fragment-view models pairs using test doubles (a fake repository), Mockito to mock the NavController, and Espresso to test the UI
- Add end to end tests to test the app as a whole and the app navigation
- Understand the architecture of the Android system
- Describe the basic building blocks of an Android app
- Use Android Jetpack and AndroidX libraries
- Display simple messages in a popup using a Toast or a Snackbar
- Display a message outside your app's UI using Notifications
- Schedule a background task using JobScheduler or WorkManager
- Understand how to localize an app
- Understand the Android activity lifecycle
- Create an Activity that displays a Layout
- Construct a UI with ConstraintLayout
- Display items in a RecyclerView
- Bind local data to a RecyclerView list using the Paging library
- Implement menu-based navigation
- Implement drawer navigation
- Implement a custom app theme
- Create a custom View class and add it to a Layout
- Add accessibility hooks to a custom View
- Apply content descriptions to views for accessibility
- Define data using Room entities
- Access Room database with data access object (DAO)
- Observe and respond to changing data using LiveData
- Use a Repository to mediate data operations
- Create persistent Preference data from user input
- Understand how to change the behavior of the app based on user preferences
- Read and parse raw resources or asset files
- Understand the basic debugging techniques available in Android Studio
- Debug and fix issues with an app's functional behavior and usability
- Use the System Log to output debug information
- Use breakpoints and inspect variables using Android Studio
- Understand the fundamentals of testing
- Write useful local unit tests
- Build instrumented unit tests
- Understand the Espresso UI test framework
- Write useful automated Android tests