Useful Links
Computer Science
Programming
By Language
Android Development with Kotlin
1. Introduction to Android and Kotlin
2. Kotlin Language Fundamentals
3. Your First Android Application
4. Android UI Fundamentals
5. Jetpack Compose: The Modern UI Toolkit
6. App Components and Lifecycle
7. App Navigation
8. Data Storage and Persistence
9. Concurrency and Background Tasks
10. Networking
11. App Architecture
12. Advanced Android Topics
13. Testing and Debugging
14. Publishing Your App
App Architecture
Importance of Architecture
Maintainability
Testability
Scalability
Separation of Concerns
Code Reusability
Architecture Principles
Single Responsibility Principle
Dependency Inversion
Separation of Concerns
Unidirectional Data Flow
Model-View-ViewModel (MVVM) Pattern
MVVM Components
Model Layer
Data Sources
Repositories
Data Models
View Layer
Activities
Fragments
Composables
ViewModel Layer
Business Logic
State Management
Data Transformation
Data Flow in MVVM
Benefits of MVVM
Jetpack ViewModel
ViewModel Purpose
UI-related Data Holder
Configuration Change Survival
ViewModel Lifecycle
Creation and Destruction
Scope Management
Creating ViewModels
ViewModel Class
ViewModelProvider
ViewModelFactory
Sharing ViewModels
Activity-scoped ViewModels
Fragment-scoped ViewModels
ViewModel with SavedStateHandle
Observable Data Patterns
LiveData
Observer Pattern
Lifecycle Awareness
Creating LiveData
Observing LiveData
Transformations
map
switchMap
MediatorLiveData
StateFlow and SharedFlow
Cold vs. Hot Streams
StateFlow Characteristics
SharedFlow Characteristics
Converting between LiveData and Flow
Choosing Between LiveData and StateFlow
Repository Pattern
Repository Purpose
Data Abstraction
Single Source of Truth
Data Source Coordination
Implementing Repositories
Repository Interface
Repository Implementation
Data Source Management
Repository with Multiple Data Sources
Local and Remote Data Sources
Cache Strategies
Data Synchronization
Dependency Injection
DI Principles
Inversion of Control
Dependency Inversion Principle
Manual Dependency Injection
Constructor Injection
Service Locator Pattern
Application Class Usage
Dependency Injection with Hilt
Hilt Setup
Hilt Annotations
@HiltAndroidApp
@AndroidEntryPoint
@Inject
@Module
@InstallIn
@Provides
@Binds
Hilt Components
Scopes in Hilt
Hilt Testing
Clean Architecture
Clean Architecture Principles
Layers in Clean Architecture
Presentation Layer
Domain Layer
Data Layer
Use Cases (Interactors)
Domain Models vs. Data Models
Previous
10. Networking
Go to top
Next
12. Advanced Android Topics