
Meet Pollards Shewn, a software engineer, teacher, husband, and father, who shares travel with his family, music, guitar, bread, and develops Android, web apps, and desktop applications.
Maps the course structure with a balance of hands-on learning and theory for an engaging intermediate Android masterclass.
Be proactive in this course by doing all the exercises and coding, taking on challenges, researching when stuck, and asking questions to maximize learning, since you can watch anytime.
The instructor promises 99.99 percent fun and provides everything you need to understand Android and work more efficiently, helping you reach beyond beginner skills in Android development.
Install Android Studio, set up the development environment, and create a virtual device or emulator to verify everything is configured correctly.
Download the official Android Studio IDE for Android apps, select the Windows or Mac installer, and note that it includes OpenJDK plus the minimum system requirements.
learn how to set up android studio, work with or without projects, and customize the interface using the material theme ui plugin, including fonts and colors.
Create an Android virtual device in Android Studio by selecting a device definition and system image, then launch the emulator to test apps across different API levels.
Install android studio, set up a virtual device, and verify the environment is ready so you avoid problems and can move on to the next section.
Clarify what it means to understand Android as a whole and begin exploring the platform.
Explore Android's software stack, from the Linux kernel and native libraries to the Java API framework and system apps. Emphasize openness and inter-app communication through content providers and telephony.
Explore the Android stack from native libraries to the Java API framework, ART, and the Linux kernel, and learn how permissions, sandboxing, and cryptography secure app interactions.
Explore art and dalvik runtimes. See how Java source compiles to bytecode and dex, and how art uses ahead-of-time compilation to native code for faster startup and better battery life.
Compare the Java compilation process, Dalvik, and ART runtimes, highlighting ART's advantages over Dalvik, and complete a research-based challenge to identify ART disadvantages.
Explore Android building blocks and components, the little pieces that high-level Android is built upon, as we examine each component in this section.
Explore the four core Android building blocks—activities, services, content providers, and broadcast receivers—and learn to interact with underlying systems, starting with activities and delving into their granular details.
Android activities track user interactions, manage foreground lifecycle to keep processes running, prioritize data retention, preserve state across interruptions, and coordinate data flow between activities.
Explore how an activity is created with onCreate and setContentView to inflate the XML layout, and compare XML versus programmatic UI creation.
Understand the Android activity lifecycle, including rotation-induced state changes and callbacks like onCreate, onStart, onPause, onStop, onDestroy, and onRestart that preserve data and restore state.
Explore the Android activity lifecycle through the six main callbacks—onCreate, onStart, onResume, onPause, onStop, and onDestroy—and learn when to suspend updates to the database and threads during transitions.
Download the code with comments on activity lifecycle callbacks and read the notes to see what happens in each method. Understand why the lifecycle matters for building efficient Android apps.
Explore the Android building blocks, including activities, content providers, services, and broadcast receivers. Delve into activity life cycles and callback methods to ensure correct behavior across app states.
Learn to save and restore transient UI state across configuration changes, ensuring the user remains in the same task even when the device rotates.
Build a simple Android app to demonstrate handling state with a counter, button, and text view, and explore how rotation resets the activity lifecycle and state.
Learn how to preserve and restore UI state across configuration changes in Android by saving a counter to a bundle and restoring it on recreate using a key.
Always call super.onRestoreInstanceState first to let the default implementation restore the view hierarchy state during restoration.
Discover how the view model class separates UI from data by storing state outside the activity lifecycle, enabling reliable save and restore of UI state.
Add the required Gradle dependency, create a counter view model that extends ViewModel, and connect it to the activity with a ViewModelProvider to separate data from UI.
Learn to save transient ui state with onSaveInstanceState and onRestoreInstanceState, then use a view model to decouple ui from data and manage state independent of the activity lifecycle.
Master fragments in Android by learning what they are, how to create them, how they communicate with activities, and manage their life cycles, including attaching and detaching.
Discover why Android fragments enhance UI flexibility by enabling side-by-side views on large devices and single-activity control of reusable fragments.
Learn how to statically define and display a fragment in an Android activity by using a fragment tag and a frame layout, inflating a hello fragment in onCreateView.
Master dynamic fragments by using a fragment manager and transaction to attach a hello fragment into a frame layout, replacing static fragment tags.
Learn how to handle android configuration changes by using savedInstanceState to avoid recreating fragments. Retrieve existing fragments via fragment manager by id or tag when returning from a config change.
Explore invoking fragment methods from an activity by wiring a button to pass text from a fragment's edit text to its text view using a fragment tag.
Explore how the fragment lifecycle mirrors the activity lifecycle, detailing callbacks from on attach to on detach, including on create, on create view, on resume, and on destroy.
Learn how fragment lifecycle methods like onCreateView, onAttach, onViewCreated, and onDestroyView orchestrate view creation, UI setup, and cleanup, with practical notes on ordering and avoiding memory leaks.
Explore communicating between fragments and activities by moving user interface elements into a fragment, implementing an on selected item listener interface, and attaching the listener in on attach.
Implement fragment-to-activity communication with a listener interface to pass updated messages from a fragment to its hosting activity. It demonstrates decoupled interaction and the on update selected pattern.
Attach the listener to the activity and pass data to fragments, then clean up on detach by nulling the listener to prevent memory leaks.
Learn to add fragment transition animations using fragment transactions, including setTransition and animations with animator resources. Explore fade and slide effects and creating animations in anim resources with object animator.
Learn how to manage the fragment back stack by recording transactions with add to back stack and tags, so the back button returns you to the previous fragment.
Explore fragment lifecycles, the fragment manager and fragment transactions with animation; learn dynamic replacement and communication between fragments and activities.
Drill in fragments with a hands-on session, applying the tools learned so far while exploring a simple vision board app.
Create a vision board app by modeling a board with id, name, description, and image, and build the interface with a main activity, recycler view, and card views.
Create a fragment to host a RecyclerView, implement an adapter and view holder, inflate item layouts, and bind each board's name and image for every list item.
Add images and refine the UI by adjusting the background color and card view in the fragment board list, display travel images from assets, and navigate to a description page.
Define navigation to a detail screen by passing a serializable board object through the recycler view adapter. Show the board name and description in a detail fragment inside the activity.
Implement an on-row click listener in board list, pass a serializable board via a bundle to the board detail fragment using new instance and setArguments, and navigate via fragment transaction.
Configure the border detail fragment to receive a serializable board object via arguments. Display the board name and description in text views and enable data passing through an interface listener.
Explore Android's core components—activities and fragments, content providers, services, and broadcast receivers—and learn what content providers are and how to create them.
Explore how content providers offer a common abstraction for sharing and consuming structured data, and use the content resolver and cursor to access data like contacts.
Configure Android Room by adding Room dependencies, and model a dream entity with an auto-generated id and columns for name and description, forming a simple database table.
Create an Android Room entity setup by converting content values into a dream object, map dream id and dream name fields, and refactor with private access to the keys.
Set up a room database with a singleton application database and a dream dao to implement insert, query, update, and delete operations on dream objects.
Learn how to implement a dream content provider in Android, using query, insert, delete, and update methods, and decide when to expose data across apps.
Register the content provider in the manifest with a unique authority, define dream table contracts, and use a UriMatcher to handle all and single-dream queries.
Learn to set up a singleton application database, create a content provider, and query data using a cursor and content resolver with proper URI, projection, and selection.
Learn to implement a content provider in an Android activity, performing create, read, update, delete operations with content values, content resolver, and observer notifications.
Implement a room database with an entity and version, wire the user interface to insert dreams via a content provider, and run inserts in a background async task.
Implement an android async task with doInBackground parameters and background work; insert data into a content provider using content values and a content resolver, then update the UI in onPostExecute.
Retrieve and display added dreams using a content provider and content resolver in a background AsyncTask, building a string from the cursor and illustrating delete all versus delete by id.
Delete dreams via a content provider in an async task, by id or all. Define selection clauses and args, use the content resolver, and handle id omissions as delete all.
Learn how to expose and consume custom content providers across apps using content resolver, with manifests, permissions, and a sample consumer app querying a dream provider via a cursor.
Learn what content providers are, how to set them up, integrate with a Room database for background operations via AsyncTask, and consume data across a custom content provider application.
Android App Development will open many doors for you since Android is the most popular operating system in the World.
Many courses focus on the basics of Android development - which is great, for the beginner; however, at some point in your journey, you'll find yourself needing more intermediate to advanced Android topics: This is the course you've been looking for!
Build a strong foundation in Intermediate Android Development, to leverage what you already know about Android.
In this course, you will be:
Learning about what Android really is, as a Platform
Fully and deeply understand how Activities and Fragments work
Master the Android Building Blocks: Activity/Fragments, Content Providers, Services and Broadcast Receivers
Learning How to integrate Room Database and ViewModels into your Applications
Mastering Android Notifications System and Background Services
Master the JobScheduler and WorkManager APIs
Build solid, robust Android Applications using Android Development Best Practices
And much more.
This is a hands-on course, which means you will be actually building several android apps as you learn!
The course is structured in such a way to improve your knowledge retention - by having a lot of hands-on projects. In each section of the course, you will be given the opportunity to practice and build something meaningful which will aid your understanding of Intermediate Android Development even further. There are quizzes, assignments, and challenges as well.
If you are looking for a course that takes your pre-existing Android knowledge to the next level, then this is definitely the course for you - I will take you through all you need to know in order to become an intermediate to advanced Android Developer.
Sign up today, and look forward to learning Intermediate Android Development Topics, and become the best Android Developer you can be.
See you inside.
Paulo