wandres.dev
Android cheatsheet
⌘ REFERENCIA · 49 elementos

Cheatsheet de Android

La plataforma entera en un sitio: Compose, estado, Material 3, datos, sistema y build. Busca por API o por lo que quieres hacer.

🎨 Compose 7

Función que describe UI@Composable fun Saludo()
El orden de la cadena importaModifier.padding().clickable()
Contenedores básicosRow · Column · Box
Lista perezosaLazyColumn { items(lista) { } }
Identidad estable en listaskey = { it.id }
Contenedor propioLayout(content) { m, c -> }
Meter una vista clásicaAndroidView(factory = ...)

♻️ Estado y ciclo 6

Recordar entre recomposicionesremember { }
Sobrevive a la muerte del procesorememberSaveable { }
Consumir un StateFlow con seguridadcollectAsStateWithLifecycle()
Estado que sobrevive al procesoSavedStateHandle
Recolectar solo en primer planorepeatOnLifecycle(STARTED)
Efecto ligado a la composiciónLaunchedEffect(key) { }

📐 Material 3 y adaptativo 6

Tema de la appMaterialTheme(colorScheme, typography)
Color dinámico del sistemadynamicDarkColorScheme(context)
Obligatorio desde Android 16enableEdgeToEdge()
No dibujar bajo las barrasWindowInsets.safeDrawing
Window size classcurrentWindowAdaptiveInfo()
Navegación que se adapta al tamañoNavigationSuiteScaffold

🧭 Navegación 5

El grafoNavHost(navController, startDestination)
Destino con tipo segurocomposable<Detalle> { }
Navegar con argumentosnavController.navigate(Detalle(id))
Limpiar el back stackpopUpTo(Inicio) { inclusive = true }
No duplicar el destinolaunchSingleTop = true

🗄️ Datos 7

Room: tabla@Entity data class Nota(...)
Consulta verificada en compilación@Query("SELECT * FROM nota")
Room reactivofun observar(): Flow<List<Nota>>
Operación atómica@Transaction
Preferencias asíncronasDataStore<Preferences>
PaginaciónPager(config) { PagingSource }
Paginación offline-firstRemoteMediator

🌐 Red 4

Retrofit@GET("notas") suspend fun listar()
Cabeceras y authOkHttpClient.Builder().addInterceptor
kotlinx.serialization@Serializable data class Dto(...)
Ktor ClientHttpClient { install(ContentNegotiation) }

⚙️ Sistema 7

Trabajo garantizadoWorkManager.enqueueUniqueWork(...)
Condiciones del trabajoConstraints.Builder().setRequiredNetworkType
Obligatorio declararloforegroundServiceType
Canal de notificaciónNotificationChannel(id, name, importance)
Permisos y resultadosrememberLauncherForActivityResult
App Links verificadosintent-filter + assetlinks.json
Widget escrito en ComposeGlanceAppWidget

🏗️ Build y calidad 7

Version cataloglibs.versions.toml
Build de producción./gradlew assembleRelease
R8buildTypes { release { isMinifyEnabled } }
Precompilar rutas críticasbaseline-prof.txt
Test de UIcomposeTestRule.onNodeWithText("x")
Logs filtradosadb logcat -s MiTag
Medir arranque y scrollmacrobenchmark