Modern Android App Architecture
Design Scalable Apps and Prepare for a Mobile Tech Lead Role
Design Scalable Apps and Prepare for a Mobile Tech Lead Role
Take your Android development skills to the next level and become an expert in app architecture. Whether building small apps or large, multimodule projects, mastering Android app architecture is key to creating scalable, maintainable, high-performing applications.
Being an expert in app architecture will also prepare you for a Mobile Tech Lead role, as you will be able to make key architectural decisions, and guide projects toward success. You will also learn crucial system design principles and patterns that will help you excel in mobile system design interviews.
Stefan started developing Android apps - almost from Android's birth - in 2011, and since then had to architect, design, and develop many challenging Android, iOS, and Multiplatform apps. In this course, he wants to share his comprehensive experience with you.
Apps are unique - different apps have different requirements and may require different architectural decisions. This course is designed to provide a solid foundation of architectural principles, explain and compare popular app architectures, and guide in selecting the right architecture based on the given requirements. Despite the course being especially targeted at Android, most concepts also apply to iOS.
About 8 hours of on-demand video content will cover what you need to know to master modern Android app architecture:
Writing Clean Code: Apply best practices and system design principles such as DRY and SOLID to create maintainable, scalable codebases.
Choosing the Right Pattern (MVC, MVP, MVVM): Learn the key differences between Model-View-Controller (MVC), Model-View-Presenter (MVP), and Model-View-ViewModel (MVVM) and choose the right pattern based on app size, complexity, and team needs
Implementing Clean Architecture: Minimize app lifetime maintenance costs and maximize developer productivity
Implementing Layered Architecture: Learn how to separate concerns into data, domain, and UI layers for better maintainability based on Google's recommended app architecture
Using Android Architecture Components: Build scalable apps using Jetpack libraries from the UI to the data layer such as the Lifecycle API, the ViewModel API, LiveData & Flow, Coroutines, SharedPreferences & DataStore, the Room database, the WorkManager API or the Paging library
Implementing Efficient Navigation: Seamlessly handle navigation in complex apps with Android’s navigation component
Applying Dependency Injection (DI): Use popular DI frameworks like Dagger and Hilt, or service locator frameworks such as Kodein and Koin to write cleaner, more testable code with better dependency management
Mastering Modularization: Organize your complex codebase into modules, whether they are based on layers, features, or both for better scalability, respecting the principles of component cohesion and component coupling
Khu vực Câu hỏi thường gặp trống
Clean Code
Xem trướcClean Code: Overview
Xem trướcClean Code: Goals
Xem trướcKISS
Xem trướcYAGNI
Xem trướcDRY
Xem trướcSOLID
Xem trướcSystem Design Principles: Quiz
SOLID: Single Responsibility Principle
Xem trướcSOLID: Open/Closed Principle
Xem trướcSOLID: Liskov Substitution Principle
Xem trướcSOLID: Interface Segregation Principle
Xem trướcSOLID: Dependency Inversion Principle
Xem trướcSOLID: Quiz
Clean Code: Demo Code
DRY: Demo
Xem trướcSingle Responsibility Principle: Demo
Xem trướcOpen/Closed Principle: Demo
Xem trướcLiskov Substitution Principle: Demo
Xem trướcInterface Segregation Principle: Demo
Xem trướcDependency Inversion Principle: Demo
Xem trướcArchitectural Patterns
Xem trướcArchitectural Patterns: Overview
Xem trướcMVC: Model-View-Controller
Xem trướcMVC: Quiz
MVC: Demo Code
MVC: Demo
Xem trướcMVP: Model-View-Presenter
Xem trướcMVP: Quiz
MVP: Demo Code
MVP: Demo
Xem trướcMVVM: Model-View-ViewModel
Xem trướcMVVM: Quiz
MVVM: Demo Code
MVVM: Demo
Xem trướcComparison: MVC vs. MVP vs. MVVP
Xem trướcArchitectural Patterns: Quiz
Layered Architecture
Xem trướcLayered Architecture: Overview
Xem trướcArchitectural Principles & Best Practices
Xem trướcArchitectural Principles: Quiz
Recommended App Architecture
Xem trướcRecommended App Architecture: Quiz
Layered Architecture: UI Layer
Xem trướcUnidirectional Data Flow
Xem trướcUI State Production Pipeline
Xem trướcExposing UI State
Xem trướcConsuming UI State
Xem trướcUI Layer: Quiz
Layered Architecture: Data Layer
Xem trướcRepositories: Advanced Topics
Xem trướcBuild Offline First
Xem trướcData Layer: Quiz
Layered Architecture: Domain Layer
Xem trướcDomain Layer: Quiz
Layered Architecture vs. Clean Architecture
Xem trướcLayered Architecture vs. Clean Architecture: Quiz
Layered Architecture: Demo Code
Demo: Intro
Xem trướcDemo: Layered Architecture Outline
Xem trướcDemo: Layered Architecture Structure
Xem trướcDemo: UI & Domain Layer
Xem trướcDemo: Data Layer
Xem trướcDemo: Sum Up
Xem trướcAndroid Architecture Components
Xem trướcAndroid Architecture Components: Overview
Xem trướcView Binding
Xem trướcData Binding
Xem trướcData Binding: Advanced Topics
Xem trướcQuiz: View Binding & Data Binding
Lifecycle-Aware Components: Lifecycle API
Xem trướcQuiz: Lifecycle API
Lifecycle API: Demo Code
Demo: Lifecycle API
Xem trướcUI Layer Libraries: ViewModel
Xem trướcViewModel: SavedStateHandle
Xem trướcSaving UI State
Xem trướcQuiz: Saving UI State
ViewModel: Best Practices
Xem trướcQuiz: ViewModel
Demo: ViewModel
Xem trướcUI Layer Libraries: LiveData
Xem trướcLiveData vs. Kotlin Flows
Xem trướcQuiz: LiveData
UI Layer Libraries: Coroutines
Xem trướcQuiz: Coroutines
Demo: Coroutines
Xem trướcData Layer Libraries: SharedPreferences & Jetpack DataStore
Xem trướcData Layer Libraries: Room
Xem trướcQuiz: Preferences & Room
Data Layer Libraries: WorkManager
Xem trướcWorkManager: Advanced Topics
Xem trướcQuiz: WorkManager
Demo: WorkManager
Xem trướcMulti-Layer Libraries: Paging Library
Xem trướcQuiz: Paging Library
Paging Library: Demo Code
Demo: Paging Library
Xem trướcApp Navigation
Xem trướcApp Navigation: Overview
Xem trướcPrinciples of Navigation
Xem trướcQuiz: Principles of Navigation
Navigation Component
Xem trướcNavigation Controller
Xem trướcQuiz: Navigation Component & Navigation Controller
Destination Types
Xem trướcBack Stack
Xem trướcQuiz: Back Stack & Destination Types
Navigation Graph: Overview
Xem trướcNavigation Graph: Nested Graphs
Xem trướcNavigation Graph: Deep Links
Xem trướcUpdate on Jetpack Compose typesafe navigation!
Navigation Graph: Type-Safe Navigation
Xem trướcQuiz: Navigation Graph
Navigation Component: Integrations
Xem trướcQuiz: Navigation Component Integrations
Navigation: Demo Code
Demo: Navigation Component
Xem trướcDependency Injection
Xem trướcDependency Injection: Overview
Xem trướcDependency Injection: Intro
Xem trướcService Locator
Xem trướcQuiz: Dependency Injection & Service Locator
Comparison of Frameworks
Xem trướcComparison of Frameworks: Dagger
Xem trướcComparison of Frameworks: Hilt
Xem trướcComparison of Frameworks: Koin
Xem trướcComparison of Frameworks: Kodein
Xem trướcComparison of Frameworks: Sum Up
Xem trướcQuiz: Frameworks
Dependency Injection: Demo Code
Demo: Hilt & Kodein
Xem trướcModularization
Xem trướcModularization: Overview
Xem trướcPrinciples of Component Cohesion
Xem trướcPrinciples of Component Coupling
Xem trướcQuiz: Component Cohesion & Coupling
Multimodule Projects
Xem trướcTypes of Modules
Xem trướcQuiz: Multimodule Projects
Modularization Strategies
Xem trướcQuiz: Modularization Strategies
Architecture by Layer: Demo Code
Modularization Demo: App Module
Xem trướcModularization Demo: Architecture by Layer
Xem trướcArchitecture by Feature: Demo Code
Modularization Demo: Architecture by Feature
Xem trướcSome prior experience in mobile app development (preferably Android) is expected.
Becoming a Mobile Tech Lead: Master architectural skills
Know how to architect apps of any size
Writing clean code: Best practices and system design principles
Comparing and choosing between MVC, MVP, and MVVM
Implementing Clean Architecture & Layered Architecture in Android apps
Building scalable apps with Android Architecture Components, Navigation & Dependency Injection
Mastering modularization in multimodule Android projects
1.2
1 Học viên
275 Khóa học
1253 Đánh giá
Xin chào các bạn, tôi là Nguyễn Đình Cường, một lập trình viên và giảng viên đam mê công nghệ với hơn 15 năm kinh nghiệm trong ngành công nghiệp phần mềm. Tôi tốt nghiệp từ Bưu Chính Viễn Thông và đã từng làm việc cho một số công ty công nghệ hàng đầu như FPT Software và VinGroup. Với chuyên môn chính là phát triển ứng dụng web, tôi đã làm việc với nhiều công nghệ như HTML, CSS, JavaScript, React cho front-end và Node.js, Express, MongoDB cho back-end. Không chỉ dừng lại ở việc viết mã, tôi còn yêu thích tìm hiểu sâu về thiết kế hệ thống và kiến trúc phần mềm. Tôi tin rằng quá trình học lập trình không chỉ đơn thuần là lý thuyết, mà còn là sự trải nghiệm thực tế và giải quyết vấn đề. Trong các khóa học của mình, tôi cố gắng cung cấp cho học viên những bài giảng thú vị và dễ hiểu, cùng với các bài tập thực hành giúp củng cố kiến thức. Tôi hy vọng rằng qua các khóa học của mình, bạn sẽ không chỉ học được cách viết mã, mà còn phát triển tư duy lập trình và kỹ năng giải quyết vấn đề. Hãy cùng nhau khám phá thế giới lập trình và biến ý tưởng của bạn thành hiện thực! Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại liên hệ với tôi. Tôi rất vui được hỗ trợ bạn trong hành trình học tập của mình!
Xem chi tiết