The summary.
STATE HELD ONLY IN AN ACTIVITY IS LOST ON ROTATION
Hold it where it survives configuration changes, and never hold a reference to a view or activity from something that outlives it.
Test rotation mid-task, backgrounding, permission refusal, no network, and upgrading from the previous release — that last one is the most commonly skipped and most commonly damaging.
NEVER HARD-CODE TEXT, COLOURS OR SIZES
Resources with qualifiers are what make translation, theming and device adaptation possible without changing code.
Prefer flat layout hierarchies — deep ones are measured repeatedly and cost performance.
BACKGROUND WORK IS RESTRICTED, DELIBERATELY
Declare constraints and let the system choose when. Battery consumption is visible to users and attributed to your application.
REQUEST PERMISSIONS AT THE MOMENT OF USE, WITH CONTEXT
Requests at startup are refused, sometimes permanently. Handle refusal by continuing without the feature.
SIZE DETERMINES WHETHER PEOPLE INSTALL AT ALL
Enable shrinking, use vector artwork, remove unused dependencies, and ship the format that delivers only what each device needs.