Android Architecture

Embrace clean design and architecture in your Android applications

Last updated 2022-01-10 | 4.7

- Learn the most important aspects of Android architecture
- Decouple user interface logic in your codebase using MVC pattern
- Employ Dependency Injection to follow Separation of Concerns principle

What you'll learn

Learn the most important aspects of Android architecture
Decouple user interface logic in your codebase using MVC pattern
Employ Dependency Injection to follow Separation of Concerns principle
Discover the real roles of Activities and Fragments in Android applications
Understand Single-Activity vs. Multi-Activity trade-offs
Use clean packages structure to reflect the business domain of your application
Avoid "Spaghetti Code" and "God Classes"

* Requirements

* Hands-on experience with Android development


In this course, you'll deep dive into Android design and architecture and learn how to write clean, readable and maintainable code in your Android applications.

As you probably know, starting developing for Android isn't that hard. Really, you can go from zero to publishing an app on Google Play in just few months. However, it's even easier to mess up your Android project with dirty code.

The symptoms of dirty code are all too common: classes with thousands of lines of code, duplicated code all over the place, obscure naming, random structure of packages, Singletons, etc. All these are very serious problems which, sooner or later, appear in and slow down most Android projects.

However, it doesn't have to be like that! There are best practices which you can learn and use in your Android applications that will ensure their long-term quality:

  • Clean Architecture

  • Model-View-X architectural patterns

  • Dependency Injection

  • Package by Feature

  • Logic Reuse Through Composition and Inheritance

  • Many more...

After completing this course, you'll start writing clean and readable code. Different features will be encapsulated in small, decoupled classes which will be organized into meaningful packages to reflect your application's business domain. You'll be using standard design and architectural patterns, so other developers will have easier time ramping up on your code. And much, much more...

No more Activities and Fragments having thousands of lines of code. No more code duplication. No more changes in many different places each time you add a new feature. No more spaghetti code!

Over the years, I worked as a corporate Android developer, wrote Android applications as a freelancer and, today, I consult companies about their Android projects and train their developers. The material in this course summarizes years of professional experience with many different types of Android applications.

All in all, in this course you'll acquire advanced knowledge and skills which will make you more productive as a developer and boost your career. Furthermore, you'll start taking professional pride in your work and enjoy Android development much more going forward. If this sounds appealing, this course is for you!

Who this course is for:

  • Professional Android developers

Course content

14 sections • 77 lectures

Course Overview Preview 03:49

Software Architecture Preview 04:36

Udemy Review System Preview 01:07

Offiicial Android Architecture Blueprints Preview 01:25

Review of MVP Architecture Blueprint Preview 08:10

My Journey to MVx in Android Preview 03:56

The Main Benefit of MVx Preview 04:13

Extracting UI Logic from Activities Preview 05:22

From MVx to MVC Preview 02:56

MVx in Android Summary Preview 00:46

StackOverflow Client Application Preview 01:34

Straightforward Implementation Preview 03:23

MVC View Preview 13:13

ViewHolder in ListView Preview 03:45

MVC View in ListView Preview 10:19

MVC View in RecyclerView Preview 01:32

Extraction of ViewMvc Interface Preview 01:37

Extraction of ObservableViewMvc Interface Preview 02:31

Extraction of BaseViewMvc Abstract Class Preview 03:36

Extraction of BaseObservableViewMvc Abstract Class Preview 04:02

Activity as Controller Preview 02:12

Android Views are Non-Optimal Choice for MVC Views Preview 02:55

MVC Basics Summary Preview 01:29

Dependency Injection Architectural Pattern Preview 06:01

Composition Root Preview 04:19

Controller Composition Root Preview 03:58

MVC Views Factory Preview 03:19

MVC Views Factory in Lists Preview 03:19

Dependency Injection Summary Preview 01:59

Question Details Requirements Preview 01:13

Exercise 1 Preview 02:14

Implementation of Question Details Screen Preview 02:32

Use Case Preview 08:38

Separation of Controllers from Networking Logic Preview 01:20

Standalone Controller for Unit Testing Preview 10:17

View Listener Management Preview 02:23

Controller Summary Preview 01:48

Importance of Packages Structure Preview 01:32

Review of Packages Structure Preview 02:04

Cleanup of Packages Structure Preview 04:18

Introduction of Toolbar Preview 02:25

Exercise 2 Preview 01:48

Toolbar Up Navigation Preview 01:55

Nested MVC Views Summary Preview 01:39

Introduction of Navigation Drawer Preview 10:22

Exercise 3 Preview 00:34

Making Hamburger Button Open Navigation Drawer Preview 04:21

Making Back Button Close Navigation Drawer Preview 06:48

Exercise 4 Preview 00:38

Reuse of Navigation Drawer Preview 04:45

Nested MVC Views through Inheritance Summary Preview 02:57

Why Fragments Preview 00:58

Refactoring of Questions List Screen to Fragment Preview 08:05

Exercise 5 Preview 00:53

Refactoring of Question Details Screen to Fragment Preview 09:07

Refactoring to "Single Activity" Approach Preview 15:28

Introduction of FragmentFrameHelper Preview 05:17

Refactoring of Navigation Drawer From Fragments into Activity Preview 18:51

Nested Cotrollers Summary Preview 05:15

Dialog Implementation Alternatives Preview 04:31

Info Dialog Preview 15:29

Prompt Dialog Preview 16:03

Preventing Multiple Dialogs on Screen Preview 07:56

Screen Finite State Machine (FSM) Preview 08:57

Exercise 6 Preview 01:53

Adding Prompt Dialog to Questions List Screen Preview 12:25

MVC in Dialogs Preview 13:59

Dialogs, Publish-Subscribe and FSMs Summary Preview 11:03

Runtime Permissions Introduction Preview 02:33

Straightforward Implementation Preview 18:43

PermissionsHelper Preview 21:27

Activity Scoped Dependencies Preview 21:40

MVC Summary Preview 04:33

Architecture Summary Preview 04:10

Bonus Lecture Preview 02:27