
Explore data binding, ViewModel, and LiveData fundamentals, and apply MVVM with Room, Retrofit, and coroutines. Build modern Android apps using Jetpack Compose, Dagger Hilt, navigation, and testing practices.
Enable English subtitles to improve comprehension by reading along with the video; use the cc icon to turn captions on and access the transcript, effective for the entire course.
Download and unzip starter and final code samples, open them in Android Studio, and follow along; if issues arise, update SDK location, rebuild, and use the Q&A forum for help.
Enable data binding in Android, create a binding object ActivityMainBinding, and replace findViewById in a simple name entry app. Use binding.greetingTextView, binding.nameEditText, and binding.submitButton to display a greeting.
Tackle a data binding coding challenge that toggles a progress bar and button text between start and stop, showing how data binding handles camel case and underscores in ids.
Explore how the view model in Android Jetpack preserves UI data across configuration changes, preventing the counter from resetting on rotation and leveraging data binding in a simple counter app.
Learn how to implement and use a ViewModel in an Android app, accessing current and updated count values and using live data to preserve state across configuration changes.
Use a view model to preserve the sum of user-entered integers across configuration changes. The app features a number input, an add button, and a text view showing the total.
Create a new Android Studio project VeiwModelDemo2, enable data binding, and use MainActivityViewModel with getTotal and setTotal to manage a running total updated via an add button.
Learn to create a custom view model with constructor parameters using a view model factory, implementing MainActivityViewModelFactory and overriding create to pass the starting total.
Implement live data for a basic Android app that increments a button click count, using a view model to preserve data across configuration changes.
Bind the view model to the data binding object and use listener bindings to trigger updateCount on button clicks, preparing to use LiveData directly in XML.
Explore two-way data binding in Android, linking a MutableLiveData username in a view model to a text view and an edit text, so the ui and data update in sync.
compare your answers with mine by binding a MainActivityViewModel in activity_main.xml and wiring totalData with two-way data binding and LiveData.
Explore the Android activity lifecycle, including onCreate, onStart, onResume, onPause, onStop, onDestroy, and onRestart, and observe how transitions occur during launches, rotations, and moving between activities.
Discover Android fragments as reusable UI components with their own lifecycle, including onCreateView and onViewCreated, hosted by an activity to manage multiple screens and bottom navigation.
Add a navigation host fragment in activity_main.xml to host the navigation graph, drag the NavHostFragment into design mode, enable defaultNavHost, and set the navGraph path.
Create and connect a navigation action from the home fragment to the second fragment, implement a button click to navigate with the nav controller, and observe back navigation.
Pass data between destinations with a bundle key user_input from the Home fragment to the Second fragment. Show the input in a TextView and validate entries with a toast.
Watch a coding challenge solution that demonstrates running coroutines on Dispatchers.IO and Dispatchers.Main, logging thread names, and preparing to display results in the user interface.
Learn to switch a coroutine between threads using withContext and Dispatchers.Main to safely update a TextView from a background task.
Explore suspending functions in kotlin coroutines, mark functions with suspend, use withContext and delay, and understand their bytecode and continuation for avoiding thread blocking.
Learn how to use async and await with Kotlin coroutines to perform parallel data fetches from two sources, reducing wait time and illustrating Dispatchers.IO and Dispatchers.Main usage.
Explore unstructured concurrency in Kotlin coroutines, why it fails to guarantee completion, and how async with await can yield the expected result while contrasting with structured concurrency.
Explore structured concurrency by using the coroutineScope suspending function to create child scopes, control dispatchers, guarantee completion of tasks, and gracefully handle or cancel errors in coroutines.
Explore how lifecycleScope and related ktx libraries automate coroutine cancellation in activities and fragments, using launchWhenCreated, launchWhenStarted, and launchWhenResumed to sync tasks with lifecycle events.
Recently Android Studio has deprecated lifecycleScope.launchWhenCreated { } .
It has been replaced with the repeatOnLifecycle API for more precise control over coroutine execution based on the lifecycle state.
We can achieve similar behavior using repeatOnLifecycle with Lifecycle.State.CREATED like this:
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
// Your code here
}
}
This new approach gives us better control and clarity on when the coroutine should start and stop based on the lifecycle state.
Explore the live data builder in livedata-ktx 2.2.0-alpha01+ that auto-executes when active, cancels with lifecycle, and uses emit to update LiveData in a view model example.
Explore how Room provides an abstraction over SQLite to simplify mobile data persistence, generates boilerplate code through annotations, and uses Room database, entities, and DAO interfaces in basic app.
Create a new Android Studio project named RoomDemo, enable data binding, configure view model, live data, Room, and coroutines with kapt, then sync the project.
Define a room entity data class for subscriber data, using @Entity with table subscriber_data_table and @ColumnInfo for subscriberId, name, and email, with subscriberId as an auto-generated primary key.
Define a DAO interface with @Dao to access the database via Room. Annotate insert, update, and delete with @Insert, @Update, @Delete, use suspending functions and LiveData for background work.
Design the subscriber view for an android app, with a main activity, name and email inputs, save and clear buttons, and a recycler view of subscribers.
Create a view model to manage subscriber data with mutable live data and two-way data binding, implementing save, update, delete, and clear all operations via a repository.
Create a RecyclerView list item to display subscribers' data by building an XML layout named list_item, using a vertical LinearLayout with a CardView and text views for name and email.
Display subscriber data in a RecyclerView using data binding and a custom adapter with a view holder; bind name and email and initialize the view with test data.
Learn to emit view events from the MVVM view model using a LiveData event wrapper, enabling toast messages after subscriber operations while keeping the view model free of view references.
Become a highly qualified Professional Level Android Developer by mastering most demanded Android skills!
If you are an Android Developer with some coding experience, If you want to level up your skills and become a professional level Android Developer this course is for you!
This large course is a collection of 7 advanced Android Development courses.
1) Complete Android Jetpack Masterclass
You will get a complete android jetpack masterclass from this course.
Covering all the areas such as Data Binding, View Binding, View Model, Live Data, Room, Navigation, Work Manager and Notifications.
I will tach you advanced areas like Room Migrations as well.
After learning the basics, You will be developing 6 complete, larger projects to master practical applications of the knowledge you gained. You will be able to learn how to use jetpack components with dagger and hilt, coroutines, retrofit and testing libraries. And how to integrate the with MVVM and MVVM Clean Architecture.
2) Jetpack Compose Masterclass
I will step by step tach you everything you need to know in order to start using jetpack compose in your android projects.
You will start by learning fundamentals such as modifiers, layouts and View components and creating RecyclerViews using lazy columns.
We will also cover advanced areas such as State in Jetpack Compose, remembering state before the recomposition, property delegates, How to work with Side Effects, Unidirectional Data Flow and State Hoisting, Saving the state with remember saveable and how to effectively use view models with jetpack compose.
3) Dependency Injection With Dagger and Hilt Crash Course
As section 16 of this course you will get a dependency injection with dagger crash course. And in the section 19 you will learn everything you need to learn about HILT.
We will start with very basic pure dependency injection examples.And step by step progress to more advanced areas of dagger and hilt. You will learn about application class, modules, component interfaces, constructor injection, field injection and scopes.
Not only that, you will be able to experience creating 3 larger projects using dagger/hilt as the dependency injection framework.
4) Kotlin Coroutines Masterclass
We will discuss about scopes, dispatchers, builders, suspending functions, structured concurrency, view model scope, lifecycle scope and live data builder with easy-to-understand code samples. You will also be able master Coroutine Flow fundamentals, State Flow , Shared Flow, Buffer and Collect Latest, Flow Operators and how to use flows with view models.
5) Networking With Retrofit Crash Course
I will show you how to communicate with a REST APIs using retrofit library.
You will learn how to send GET and POST request to a server, how to effectively use path and query parameters,
how to receive data from a server, logging interceptors, timeouts, converting JSON formatted data received from server to Kotlin as well as how to use coroutines with retrofit.
6) MVVM and MVVM clean architecture Masterclass
With this course you will be able to master MVVM and MVVM clean architecture with single activity multiple fragments model and single activity multiple composables model.
We will be step by step building 6 larger well architected projects with Jetpack Architecture components and other supporting libraries such as Dagger/Hilt, Coroutines and Retrofit.
7) Unit Testing With JUnit And Mockito Crash Course
You will be able to learn how to unit test android applications using JUnit and third party libraries like Mockito and Truth.
I will teach you fundamentals of android unit testing with easy to understand code samples.
We will talk about test doubles, testing view model , live data and room db components, as well as testing with mock web servers.
With over 340 lectures and more than 35 hours of video, this comprehensive course leaves no stone unturned! .
I will start by teaching you each major topic with easy to understand simple project examples . Later, we will complete larger/complex project examples applying all the things we learnt.
To improve the student engagement coding challenges(homework assignments) and quizzes have included to each chapter, as well as 6 major projects aimed to provide a clear idea about how all those components work together!
This course will teach you Advanced Android Development in a practical manner, with every lecture comes a full coding screen-cast, corresponding short notes and downloadable code samples! Learn in whatever manner is best for you!
You will get lifetime access to over 340 lectures plus corresponding code samples and notes for the lectures!
This course comes with a 30 day money back guarantee! If you are not satisfied in any way, you'll get your money back. Plus you will keep access to the Notes and Code Samples as a thanking for trying out the course!
So what are you waiting for? Start mastering Android Jetpack, Jetpack Compose, Android Architecture Best practises, Dagger/Hilt, Kotlin Coroutines, Retrofit and Unit Testing in a way that will advance your career and increase your knowledge, all in a fun and practical way!
Who is the target audience?
· Beginners level Android Developers (with the basic knowledge of Android Development fundamentals).
· Intermediate level android developers who want to level up their skills!
Note:
During the course (in one section) to demonstrate different usages of retrofit, we will use TMDB free online REST API . You may need to provide an email address to sign up and get a free API key from them.