Android Development with Kotlin

  1. App Architecture
    1. Importance of Architecture
      1. Maintainability
        1. Testability
          1. Scalability
            1. Separation of Concerns
              1. Code Reusability
              2. Architecture Principles
                1. Single Responsibility Principle
                  1. Dependency Inversion
                    1. Separation of Concerns
                      1. Unidirectional Data Flow
                      2. Model-View-ViewModel (MVVM) Pattern
                        1. MVVM Components
                          1. Model Layer
                            1. Data Sources
                              1. Repositories
                                1. Data Models
                                2. View Layer
                                  1. Activities
                                    1. Fragments
                                      1. Composables
                                      2. ViewModel Layer
                                        1. Business Logic
                                          1. State Management
                                            1. Data Transformation
                                          2. Data Flow in MVVM
                                            1. Benefits of MVVM
                                            2. Jetpack ViewModel
                                              1. ViewModel Purpose
                                                1. Configuration Change Survival
                                                2. ViewModel Lifecycle
                                                  1. Creation and Destruction
                                                    1. Scope Management
                                                    2. Creating ViewModels
                                                      1. ViewModel Class
                                                        1. ViewModelProvider
                                                          1. ViewModelFactory
                                                          2. Sharing ViewModels
                                                            1. Activity-scoped ViewModels
                                                              1. Fragment-scoped ViewModels
                                                              2. ViewModel with SavedStateHandle
                                                              3. Observable Data Patterns
                                                                1. LiveData
                                                                  1. Observer Pattern
                                                                    1. Lifecycle Awareness
                                                                      1. Creating LiveData
                                                                        1. Observing LiveData
                                                                          1. Transformations
                                                                            1. map
                                                                              1. switchMap
                                                                              2. MediatorLiveData
                                                                              3. StateFlow and SharedFlow
                                                                                1. Cold vs. Hot Streams
                                                                                  1. StateFlow Characteristics
                                                                                    1. SharedFlow Characteristics
                                                                                      1. Converting between LiveData and Flow
                                                                                      2. Choosing Between LiveData and StateFlow
                                                                                      3. Repository Pattern
                                                                                        1. Repository Purpose
                                                                                          1. Data Abstraction
                                                                                            1. Single Source of Truth
                                                                                              1. Data Source Coordination
                                                                                              2. Implementing Repositories
                                                                                                1. Repository Interface
                                                                                                  1. Repository Implementation
                                                                                                    1. Data Source Management
                                                                                                    2. Repository with Multiple Data Sources
                                                                                                      1. Local and Remote Data Sources
                                                                                                        1. Cache Strategies
                                                                                                          1. Data Synchronization
                                                                                                        2. Dependency Injection
                                                                                                          1. DI Principles
                                                                                                            1. Inversion of Control
                                                                                                              1. Dependency Inversion Principle
                                                                                                              2. Manual Dependency Injection
                                                                                                                1. Constructor Injection
                                                                                                                  1. Service Locator Pattern
                                                                                                                    1. Application Class Usage
                                                                                                                    2. Dependency Injection with Hilt
                                                                                                                      1. Hilt Setup
                                                                                                                        1. Hilt Annotations
                                                                                                                          1. @HiltAndroidApp
                                                                                                                            1. @AndroidEntryPoint
                                                                                                                              1. @Inject
                                                                                                                                1. @Module
                                                                                                                                  1. @InstallIn
                                                                                                                                    1. @Provides
                                                                                                                                      1. @Binds
                                                                                                                                      2. Hilt Components
                                                                                                                                        1. Scopes in Hilt
                                                                                                                                          1. Hilt Testing
                                                                                                                                        2. Clean Architecture
                                                                                                                                          1. Clean Architecture Principles
                                                                                                                                            1. Layers in Clean Architecture
                                                                                                                                              1. Presentation Layer
                                                                                                                                                1. Domain Layer
                                                                                                                                                  1. Data Layer
                                                                                                                                                  2. Use Cases (Interactors)
                                                                                                                                                    1. Domain Models vs. Data Models