Android Development Fundamentals
Android development is the practice of building applications for devices running Google's Android operating system. It covers the platform's component model, lifecycle management, UI framework, data persistence, and distribution through the Play Store.
itMobile and client application development | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Android Development Fundamentals
Android development is what happens when you write code for an operating system that does not trust you to run forever. The system starts your code through one of four declared entry points, on its own schedule, and can stop it whenever it wants the memory back. Your job is not to own a process. It is to describe what should happen when the system hands you one.
That sounds alarming and mostly isn't. A phone runs dozens of apps on one battery, so nothing gets to hold resources indefinitely just because it asked first. Desktop software could assume its process would still exist a minute from now; Android can't make you that promise. The whole platform is built around lifecycle — the states and callbacks the system uses to tell your app what is happening to it.
An activity, the entry point most apps are built around, gets created, started, and resumed, then can be paused, stopped, or destroyed — sometimes in that order, sometimes not, because a rotation or a low-memory kill can jump straight to reconstruction.
The interface layer runs on a different idea entirely. Jetpack Compose is declarative: a function describes the interface for the current state instead of reaching into a widget tree and mutating it, and Compose decides on its own when to run that function again.
Underneath both, the recommended shape keeps a screen's state in a ViewModel and its actual data behind a repository, so the screen itself never talks to a database or network client directly.
Here is the part that catches people off guard: process death is not an edge case, it is routine, and it is nearly invisible until it isn't. The system can throw away your whole app in the background for memory it needs elsewhere, then quietly recreate it later from whatever state you bothered to save. Most apps only discover how much they forgot to save when a real user, on a real device, loses a half-finished form.
It gets worse before it gets fair: some phone manufacturers layer their own battery managers on top of Android's documented rules and kill background work more aggressively than the platform itself requires. The permission you were granted, the job you scheduled correctly, the API you called by the book — all of it can still lose to a setting on the user's specific phone that you do not control and cannot query.
None of this means the platform is hostile. It means the platform's guarantees are a floor, and the interesting engineering happens above it.
Read the Intro next for the full architecture, one piece at a time. The Cheatsheet turns that into lookup tables for the moment you are mid-decision. Field Notes covers what actually goes wrong once an app ships, past anything a tutorial mentions. Then the Quiz checks whether it stuck.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://developer.android.com/courses/android-basics-compose/course
Supports
- Official beginner progression through Kotlin, Android Studio, Compose, state, navigation, architecture, data, background work, testing, and adaptive interfaces
- Compose as the recommended toolkit for adaptive Android user interfaces
- https://developer.android.com/
Supports
- Official Android development documentation, tools, platform guidance, and learning paths
- Compose-first getting-started direction and multi-device scope
- https://developer.android.com/kotlin/first
Supports
- Kotlin as the recommended starting language for new Android apps
- Kotlin-first tools, samples, documentation, training, and Jetpack guidance
- Continued Java interoperability and support
- https://developer.android.com/guide/components/fundamentals
Supports
- Android application package and Android App Bundle distinction
- Per-app process, identity, sandbox, and least-privilege model
- Activities, services, broadcast receivers, and content providers as component types
- Components as system entry points with distinct lifecycles
- Manifest and resource roles
- https://developer.android.com/guide/topics/manifest/manifest-intro
Supports
- Mandatory AndroidManifest.xml file
- Component, permission, intent filter, and required feature declarations
- Component declaration and external exposure
- Build-time manifest merging
- https://developer.android.com/guide/components/activities/activity-lifecycle
Supports
- Activity lifecycle states and callbacks
- Initialization in onCreate
- Visibility and foreground transitions
- Configuration-driven recreation and state restoration responsibilities
- https://developer.android.com/develop/ui/compose/mental-model
Supports
- Compose as a declarative user interface toolkit
- Interface description instead of imperative view mutation
- Recomposition behavior and composable execution properties
- Side-effect constraints in composable functions
- https://developer.android.com/develop/ui/compose/state
Supports
- State as changing application values
- Observable state and recomposition
- remember and saveable state boundaries
- State hoisting, values flowing down, and actions flowing up
- Stateless composable reuse and testing
- https://developer.android.com/topic/architecture/recommendations
Supports
- User interface and data layers
- Repository boundary between user interface and data sources
- Unidirectional data flow and single source of truth
- Screen-level ViewModel state and lifecycle-aware collection
- Optional domain layer for shared or complex business logic
- Testing recommendations and fake implementations
- https://developer.android.com/topic/architecture/data-layer
Supports
- Repositories coordinating data sources
- Repository source-of-truth responsibilities
- Main-safe data-layer operations
- WorkManager for business operations that must survive process death
- https://developer.android.com/topic/libraries/architecture/viewmodel
Supports
- ViewModel as a screen-level state holder
- State retention across configuration changes
- User interface business logic and data-layer delegation
- https://developer.android.com/guide/topics/resources/providing-resources
Supports
- External resource storage and generated resource identifiers
- Default and configuration-specific resource directories
- Runtime selection of best-matching resources
- Language, density, and other configuration qualifiers
- https://developer.android.com/guide/navigation
Supports
- Navigation guidance, destinations, back-stack state, and deep links
- Current Navigation 3 learning path
- https://developer.android.com/training/data-storage
Supports
- App-specific storage, shared storage, preferences, and database choices
- Internal storage for sensitive app-only files
- Room as the structured private database boundary
- MediaStore and system storage interfaces
- https://developer.android.com/topic/libraries/architecture/datastore
Supports
- DataStore as a durable asynchronous storage API for small datasets
- Preference-like key-value data and typed data boundaries
- https://developer.android.com/training/data-storage/room
Supports
- Room as the recommended abstraction over SQLite for structured local data
- Database, entity, and data access object responsibilities
- https://developer.android.com/training/permissions/requesting
Supports
- Runtime permission request workflow
- Point-of-use permission checks
- Rationale, approval, and denial handling
- Rechecking before protected operations
- https://developer.android.com/privacy-and-security/minimize-permission-requests
Supports
- Minimum-permission design
- Permission-free API alternatives
- User privacy and flow costs of permission requests
- https://developer.android.com/develop/background-work/background-tasks
Supports
- Asynchronous work, task scheduling, and foreground service categories
- WorkManager as the usual persistent task scheduler
- Lifecycle limits of ordinary asynchronous work
- Main-thread blocking and application-not-responding risk
- Specialized APIs as alternatives to foreground services
- https://developer.android.com/develop/background-work/background-tasks/persistent
Supports
- Persistent work across app restarts and device reboots
- Immediate, long-running, and deferrable work categories
- Work constraints, unique work, and managed rescheduling
- https://developer.android.com/training/testing/fundamentals
Supports
- Testing benefits and repeatability
- Local tests on a development machine or server
- Instrumented tests on physical or emulated Android devices
- Unit, integration, and end-to-end test scopes
- https://developer.android.com/develop/ui/compose/accessibility/semantics
Supports
- Semantics as user interface meaning and actions
- Semantics tree use by accessibility services and testing
- Built-in semantics and manual semantics for custom components
- https://developer.android.com/guide/topics/ui/accessibility/principles
Supports
- Labels and accessibility actions
- Built-in Compose accessibility behavior
- Cues beyond color and accessible media
- TalkBack and Switch Access roles
- https://developer.android.com/guide/topics/ui/accessibility/testing
Supports
- Manual accessibility service testing
- Accessibility analysis tools
- Automated Compose testing
- https://developer.android.com/privacy-and-security/security-tips
Supports
- Internal storage privacy
- Exported content provider and component controls
- Minimum permission guidance
- HTTPS for secure network traffic
- Input validation and credential handling
- https://developer.android.com/topic/performance/measuring-performance
Supports
- Tracing and benchmarking
- Production-like performance measurement
- Severe debug-build performance distortion
- Startup, rendering, application-not-responding, memory, and battery measurement areas
- https://developer.android.com/build
Supports
- Gradle and Android Gradle plugin responsibilities
- Build types, product flavors, and build variants
- Source sets and manifest merging
- Debug and release signing
- Shrinking and Android App Bundle packaging
- https://developer.android.com/guide/app-bundle/app-bundle-format
Supports
- Android App Bundle as a publishing format
- Google Play generation of device-specific APK artifacts
- https://developer.android.com/studio/publish/
Supports
- Release configuration, signing, testing, and distribution
- Android App Bundle requirement for new Google Play apps
- Marketplace and direct distribution choices
- Store listing and release preparation
- https://googlepress.blogspot.com/2007/11/industry-leaders-announce-open-platform.html
Supports
- The Open Handset Alliance announcement of Android as an open mobile platform in November 2007.
- https://www.openhandsetalliance.com/press_102108.html
Supports
- The October 2008 availability of Android platform source code through the Android Open Source Project.
- https://android-developers.googleblog.com/2013/05/android-studio-ide-built-for-android.html
Supports
- The May 2013 Android Studio early-access preview and its Gradle-based build system.
- https://blog.google/products-and-platforms/platforms/android/google-io-2014-keynote/
Supports
- The June 2014 Material Design announcement and its consistent Android design approach.
- https://android-developers.googleblog.com/2017/05/android-announces-support-for-kotlin.html
Supports
- Android support for Kotlin announced in May 2017, including the Android Studio 3.0 plug-in.
- https://android-developers.googleblog.com/2018/05/use-android-jetpack-to-accelerate-your.html
Supports
- The May 2018 introduction of Android Jetpack, its AndroidX libraries, and its architecture guidance.
- https://android-developers.googleblog.com/2019/10/android-dev-summit-2019-keynote.html
Supports
- The October 2019 Jetpack Compose Developer Preview and its Android Studio integration.
- https://android-developers.googleblog.com/2021/07/jetpack-compose-announcement.html
Supports
- The July 2021 Jetpack Compose 1.0 release and its production-ready status.
- https://developer.android.com/studio
Supports
- Android Studio as the official Android IDE, including Gradle builds, Compose design tools, and Android device testing.
- https://firebase.google.com/pricing
Supports
- Firebase managed app services and its no-cost Spark and pay-as-you-go Blaze pricing plans.
- https://bitrise.io/pricing
Supports
- Bitrise mobile CI/CD plans, including a free Hobby plan and paid plans for Android build workflows.
- https://www.browserstack.com/app-live
Supports
- BrowserStack App Live for interactive testing of Android applications on real devices.
- https://www.genymotion.com/pricing/
Supports
- Genymotion virtual Android devices and its free personal-use and paid plans.
- https://dontkillmyapp.com/
Supports
- OEM battery managers (Huawei, Xiaomi, OnePlus, Samsung, and others) killing background processes, restricting autostart, and deferring scheduled work more aggressively than stock Android's app-standby restrictions
- AOSP and Pixel devices honoring documented background-execution behavior by default
- https://developer.android.com/develop/ui/compose/performance/stability
Supports
- Compose skipping recomposition only for composables whose parameters are provably stable
- Unstable parameters forcing a composable and its children to recompose whenever their parent does
- https://developer.android.com/topic/performance/vitals
Supports
- Core vitals (user-perceived crash rate, user-perceived ANR rate, excessive partial wake locks) tracked on a 28-day rolling average
- Bad-behavior thresholds of 8% per-device crash rate, 8% per-device ANR rate, and 5% excessive partial-wake-lock rate
- Reduced Google Play visibility for apps exceeding core vitals thresholds, with wake-lock enforcement starting March 1, 2026
- https://support.google.com/googleplay/android-developer/answer/11926878
Supports
- Google Play's annually recurring minimum target API level requirement for existing apps
- The August 31, 2026 deadline to target Android 15 (API level 35) or higher, with an extension available only until November 1, 2026
- Google Play blocking new app and update submissions that miss the target API level requirement
