Android Tutorial #15: Widgets with Glance — Compose for Home Screen

Widgets live on the home screen. They show information at a glance — weather, tasks, calendar events, music controls. Users love them because they don’t have to open the app. Building widgets used to mean writing XML RemoteViews. It was painful. Jetpack Glance changed this. Glance lets you build widgets with a Compose-like API. In this tutorial, you will learn how to build widgets with Glance — from a simple text widget to a task list widget that loads data from Room. ...

July 8, 2026 · 9 min

Android Tutorial #14: Deep Links and App Links

A user clicks a link on Twitter. Instead of opening a web page, your app opens directly to the product detail screen. Another user scans a QR code and lands on the signup page inside your app. This is what deep links do. They let URLs open specific screens in your app. In this tutorial, you will learn the difference between deep links and App Links, how to set up both, and how to integrate them with Compose Navigation. ...

July 8, 2026 · 8 min

Android Tutorial #13: Content Providers and File System Access

Your app needs to pick a photo from the gallery. Or save a file that other apps can open. Or read contacts. All of these go through Android’s storage and content provider system. The way Android handles file access has changed significantly. Scoped storage, the photo picker, and MediaStore have replaced the old “read everything on the device” approach. In this tutorial, you will learn how to work with files, media, and content providers the modern way. ...

July 7, 2026 · 9 min

Android Tutorial #12: Foreground Services — Music Player, Location Tracking

Your music app needs to keep playing when the user switches to another app. Your fitness app needs to track location while the phone is in the user’s pocket. A download manager needs to stay alive until the file is complete. These are foreground services. They run long-running operations that the user is aware of, shown with a persistent notification. In this tutorial, you will learn how to build foreground services — service types, lifecycle, communication with the UI, and practical examples for music playback and location tracking. ...

July 7, 2026 · 10 min

Android Tutorial #11: Notifications — Channels, Styles, and Actions

Notifications are how your app communicates with users when they are not looking at the screen. A chat message arrives. A download completes. A delivery is on the way. In this tutorial, you will learn how to build notifications from basic to advanced — channels, styles, actions, permission handling, and the new Progress-centric notifications in Android 16. Prerequisites: You should know Kotlin basics and Compose fundamentals. If not, start with the Kotlin tutorial series and the Jetpack Compose tutorial series. ...

July 7, 2026 · 10 min

Android Tutorial #10: Paging 3 — Infinite Scroll with Compose

Your app has a list of 10,000 items. Loading them all at once is a bad idea. The API call takes forever. The device runs out of memory. The UI freezes while Room queries thousands of rows. You need pagination — load 20 items at a time, and load more when the user scrolls near the bottom. You could build this manually. Track the current page. Handle loading and error states. Cache pages. Manage memory. Or you could use Paging 3, which does all of this for you. ...

July 6, 2026 · 10 min

Android Tutorial #9: WorkManager — Background Tasks Done Right

Your app needs to sync data with the server every hour. Or compress images before uploading. Or clean up old cache files once a day. You cannot use a coroutine for this. If the user closes the app, the coroutine dies. If the device restarts, the work is gone. WorkManager guarantees execution. It schedules background tasks that survive app restarts, device reboots, and even Doze mode. Android’s system handles when to run the work — you just define what to do and under what conditions. ...

July 6, 2026 · 8 min

Android Tutorial #8: DataStore — Replace SharedPreferences

SharedPreferences has been the go-to way to store simple data on Android for over a decade. It works. But it has problems. It runs on the main thread and can cause jank. It has no type safety — you request a string and get a crash if the key holds an integer. It has no way to observe changes reactively. And it does not handle errors — a corrupted file means lost data with no recovery. ...

July 6, 2026 · 8 min

Android Tutorial #7: Room Database — Advanced Patterns

The Compose tutorial covered basic Room: one entity, one DAO, simple CRUD operations. That is enough for a notes app. Real apps need more. Users update their app and you need to migrate the database without losing data. You have notes with tags — a many-to-many relationship. Users search through thousands of notes and expect instant results. This tutorial covers the advanced Room patterns you need for production apps. Prerequisites: Compose Tutorial #13: Room basics and Kotlin Tutorial: Flow. ...

July 5, 2026 · 8 min

Android Tutorial #6: Retrofit + Kotlin Serialization — Modern API Calls

In the Compose series, you learned basic Retrofit: define an interface, call an endpoint, show the result. That works for tutorials. In production, you need more. Authentication tokens that refresh automatically. Logging for debugging. Retry logic for flaky networks. Proper error handling that shows meaningful messages. This tutorial builds a production-ready API layer with Retrofit 3, Kotlin Serialization, and OkHttp interceptors. Prerequisites: Compose Tutorial #12: Retrofit basics and Kotlin Tutorial: Serialization. Why Kotlin Serialization Over Gson? Retrofit traditionally used Gson for JSON parsing. Kotlin Serialization is better for modern Android: ...

July 5, 2026 · 8 min