Tu progreso en el tema

El progreso se guarda en este navegador. Inicia sesión para sincronizarlo entre dispositivos.

✓Cómo usar esta guía

  • Empieza por A2.1 · Análisis de una app de código abierto y avanza en orden: de leer código ajeno a modificarlo, de observar el ciclo de vida a arrancar tu propio proyecto con Git.
  • Cada página de actividad es autosuficiente: teoría, pasos, comandos y criterios. No necesitas volver aquí para completarla.
  • Marca las casillas conforme avanzas; el menú lateral y la barra de arriba se actualizan solos.
  • Los bloques de código tienen botón Copiar.
Meta del temaTerminar sabiendo leer y modificar con seguridad el código de una app Android ajena, entender por qué Android destruye y recrea Activities, y tener el esqueleto del Proyecto A (propuesto en A1.4) compilando y versionado en Git.

1Los cuatro componentes y el AndroidManifest

Android estructura las apps como un conjunto de componentes independientes que el sistema invoca cuando lo necesita, no como un programa lineal con un único punto de entrada.

ComponenteFunciónCaracterísticas
ActivityPantalla interactiva del usuarioCiclo de vida propio; el enfoque moderno usa una sola por app
ServiceTrabajo en segundo plano sin interfazSe ejecuta en el hilo principal por defecto
Broadcast ReceiverReacciona a eventos del sistemaEscucha anuncios; sin interfaz propia
Content ProviderAcceso a datos compartidos entre appsMenos usado; similar a una base de datos expuesta
xml
<manifest>
    <uses-permission android:name="android.permission.INTERNET" />
    <application>
        <activity android:name=".MainActivity" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
android:exportedIndica si otras apps pueden invocar el componente. Obligatorio declararlo desde Android 12 en cualquier componente con intent-filter. Por defecto, ponlo a false salvo que necesites lo contrario.

2Recursos: separar contenido de lógica

Todo lo que no es código Kotlin vive en res/, organizado por tipo, y cada recurso obtiene un identificador automático en la clase R.

CarpetaContiene
layout/XML de interfaces visuales
drawable/Imágenes, iconos vectoriales, formas
mipmap/Iconos de la app en distintas densidades
values/Strings, colores, dimensiones, estilos
Cualificadores de configuraciónEl sistema elige automáticamente la versión del recurso según el dispositivo: values-en/ por idioma, layout-land/ por orientación, layout-sw600dp/ por tamaño de pantalla, drawable-xxhdpi/ por densidad, values-night/ por tema. Se pueden combinar respetando el orden, por ejemplo layout-land-sw600dp/.

3Ciclo de vida de la Activity

Responde a las limitaciones de memoria de un dispositivo móvil: la Activity pasa por estados que generan callbacks para que la app reaccione.

CallbackCuándo se dispara
onCreate()Una única vez, al crear la Activity
onStart()Se vuelve visible
onResume()Obtiene el foco; empieza la interacción real
onPause()Pierde el foco, puede seguir parcialmente visible
onStop()Ya no es visible
onDestroy()Se libera definitivamente
Rotar la pantalla destruye y recreaAndroid trata un giro como un cambio de configuración: destruye la Activity (onPause → onStop → onDestroy) y la recrea desde cero (onCreate → onStart → onResume). Las variables en memoria se pierden si no se gestionan con onSaveInstanceState.

4El Proyecto A entra en Git

Desde este tema, el Proyecto A propuesto en A1.4 se desarrolla con control de versiones obligatorio.

bash
git init
git add .
git commit -m "Esqueleto inicial del proyecto"
# Tras cada avance:
git add .
git commit -m "Descripción específica del cambio"
Qué no va en el repositorioLa carpeta build/ ni los archivos de configuración del IDE. Usa un .gitignore apropiado para Android, no uno genérico.

Contenido reestructurado a partir de webpmdm.netlify.app (Tema 2 — Anatomía de una aplicación Android: componentes y ciclo de vida). Fuente única de la verdad para cualquier duda de detalle.