
Explore software architecture as risk-management decisions in anticipation of inevitable changes to system requirements. Learn to balance trade-offs and keep architecture independent of libraries and frameworks to reduce maintenance cost.
Explore how packaging structure shapes a codebase, an app's architecture, and long-term maintainability. Learn to design and maintain a proper package structure early to scale your Android project.
Refactor by extracting screen classes from the main activity into a dedicated screens package, including question details, questions list, and favorite screens, and simplify navigation via a new main screen.
Centralize navigation logic in the main screen composable and refactor the bottom bar and top bar for a single navigation flow.
Introduce a screens navigator to encapsulate navigation logic, decoupling UI from navigation and enabling type-safe routing for question detail and tab navigation.
Extracts non-ui logic into a presenter to decouple the ui from data fetching, improving reuse, maintainability, and navigation stability across compositions.
Refactor the questions list view model with Hilt dependency injection, removing retrofit instantiation and ensuring a single retrofit instance for a clean fetch questions use case and question detail screen.
Explore MVX architectural patterns in Android through Google's official architecture blueprints, examining multiple approaches to a simple to-do app and critiquing their design with professional honesty.
Trace the historical evolution of MVx in Android, from MVC to MVP, and learn how the activity becomes the view while logic shifts to standalone components.
MVx's main benefit is decoupling UI logic and encapsulating it in view components. This improves stability and enables faster, safer UI changes.
In this course you'll journey into the depths of Android Architecture and learn to build clean and maintainable Android applications.
Developing an Android application takes effort and skill, but it's even more challenging to keep this application maintainable and extensible in the long term. Just writing code to "make it work", without giving consideration to the big picture, can easily lead to a messy codebase.
Unfortunately, dirty code is all too common in Android development. Many projects suffer from classes containing hundreds or even thousands of lines of code, circular dependencies, excessive coupling, code duplication, obscure naming conventions, poorly structured packages, and other deficiencies. These are serious issues that impede project progress and can make Android development a miserable experience.
Said that, Android development doesn't have to be a struggle, even with mature and complex projects! In this course, you’ll learn advanced architectural techniques that will guarantee the long-term success of your Android applications:
Clean Architecture
Proper way to structure application's packages
Model-View-X architectural patterns
How to create reusable components that adhere to the Single Responsibility Principle
Dependency Injection architectural pattern
and more...
After completing this course, you'll be writing clean and maintainable code. Different features will be encapsulated in focused, decoupled classes. The classes themselves will be distributed among well-organized, properly named packages. You'll be using standard architectural patterns, so other developers will have easier time understanding your code. Your business flows will be encapsulated in standalone, reusable components. And much more...
No more classes with hundreds of lines of code!
No more excessive coupling!
No more code duplication!
No more changes in many places each time you add a new feature!
No more spaghetti code!
So, if you want to master advanced Android development techniques to build well-architected, clean Android applications, this course is perfect for you!