arquitectura de aplicaciones · ciencia de la computación e ia introducción a android 6 ciclo de...
TRANSCRIPT
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IA
Plataforma Android
Sesión 1: introducción a Android
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 2
Puntos a tratar• Aplicaciones Android
• El archivo Manifest• Ciclo de ejecución de aplicaciones• Recursos• Actividades
• Nuestra primera aplicación• Ciclo de ejecución de actividades
• Eventos relacionados
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 3
Aplicaciones Android• Compuestas por un conjunto heterogéneo de
componentes:• Actividades• Servicios• Proveedores de contenidos• Intents• Receptores• Widgets• Notificaciones
• Componentes enlazados mediante AndroidManifest.xml
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 4
El archivo Manifest• Obligatorio y único• Situado en la carpeta raíz• Formato XML• Objetivos
• Estructura de la aplicación• Un nodo por cada componente de la aplicación
• Metainformación• Nombre de la aplicación, icono, versión, etc.
• Requisitos• Versión Android, permisos, etc.
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 5
El archivo Manifest<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="es.ua.jtech.android" android:versionCode="1" android:versionName="1.0"><uses-sdk android:minSdkVersion="9" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".NombreProyectoActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity></application></manifest>
AndroidManifest.xml
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 6
Ciclo de ejecución de aplicaciones• Las aplicaciones tienen poco control sobre su ejecución
• Android administra sus recursos de manera agresiva
• Cualquier aplicación debe estar preparada para su repentina finalización• Persistencia de datos, guardar el estado de la interfaz, etc.
• En caso de necesitar recursos, se finalizan aplicaciones, en orden creciente de prioridad• Prioridad de una aplicación a partir de su componente de mayor
prioridad
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 7
Ciclo de ejecución de aplicaciones
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 8
Recursos• Todo lo que no sea código fuente
• Imágenes, cadenas de texto, layouts, etc.
• Separados del código• Carpeta res/• Subcarpetas para cada tipo de recurso
• Mecanismo simple para proporcionar diferentes valores a los recursos según el idioma y otros parámetros
• Clase R• Referencias a los recursos• Acceso a los recursos desde el código fuente
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 9
Recursos• Ejemplo de internacionalización
• Siempre debe existir una carpeta por defecto para cada tipo de recurso
Project/res/
values/strings.xml
values-fr/strings.xml
values-fr-rCA/strings.xml
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 10
Actividades• Cada “ventana” de la interfaz de nuestra aplicación será
una actividad• Subclases de Activity• Contendrá objetos de la clase View• Navegación entre ventanas
• Comenzar una nueva actividad• Volver a la actividad anterior
• La mayoría están diseñadas para ocupar toda la pantalla• Pueden existir actividades “flotantes” o semitransparentes
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 11
Creando actividades• Subclase de Activity
package es.ua.jtech.android; import android.app.Activity;import android.os.Bundle; public class MiActividad extends Activity { /** Método invocado al crearse la actividad **/ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }}
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 12
Creando actividades• Importante: añadir nodo <activity> en el Manifest
<activity android:label="@string/app_name" android_name=".MiActividad"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity>
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 13
Nuestra primera aplicación• Creando el proyecto
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 14
Nuestra primera aplicación• Datos del proyecto
• Project name: EjemploAplicacion• Build target: Android 2.3.3• Application name: Ejemplo de aplicación• Package name: es.ua.jtech.android• Create activity: MainActivity
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 15
Nuestra primera aplicación
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 16
Nuestra primera aplicación• Archivo AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="es.ua.jtech.android" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 17
Nuestra primera aplicación• Recursos
• res/values/strings.xml
• En el Manifest: @string/app_name• res/drawable-Xdpi
• icon.png
• En el Manifest: @drawable/icon• res/layout
• En main.xml: @string/hello
<?xml version="1.0" encoding="utf-8"?><resources> <string name="hello">Hello World, MainActivity!</string> <string name="app_name">Ejemplo de aplicación</string></resources>
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 18
Nuestra primera aplicación• La actividad principal
package es.ua.jtech.android; import android.app.Activity;import android.os.Bundle; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }}
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 19
Nuestra primera aplicación• Aspecto de la aplicación por defecto
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 20
Nuestra primera aplicación• Objetivo
• Botón con contador• Al pinchar en el botón aumenta el contador
• Pasos: • Añadir el botón a la interfaz (desde el código)• Definir recursos• Evento manejador del click del ratón
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 21
Nuestra primera aplicación• Añadir el botón a la interfaz
• Definir recursos (strings.xml)
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); boton = new Button(this); boton.setText(R.string.texto_boton); setContentView(boton);}
<string name="texto_boton">0</string>
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 22
Nuestra primera aplicación• Nuevo aspecto de la aplicación
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 23
Nuestra primera aplicación• Evento manejador del click del ratón
boton.setOnClickListener(new OnClickListener() { public void onClick(View v) { int numero = Integer.parseInt(boton.getText().toString()); numero++; boton.setText(new Integer(numero).toString()); } });
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 24
Ciclo de ejecución de actividades• Anteriormente vimos cómo administra Android la
ejecución de aplicaciones• Ahora vemos cómo se administra la ejecución de
actividades dentro de una aplicación• Prioridad de una actividad depende de su estado• Prioridad de una aplicación depende de la de sus actividades
• Pila de actividades• Colección “lastinfirstout”
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 25
Ciclo de ejecución de actividades
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 26
Ciclo de ejecución de actividades• Posibles estados de una actividad
• Activa• Visible• Foco y entrada del usuario
• En pausa• Visible• Ni foco ni entrada del usuario
• Detenida• No visible• Candidata a ser eliminada para liberar recursos
• Inactiva• No se ha iniciado o ya ha terminado• Fuera de la pila de actividades
Android intentará manteneruna actividad activa o en
pausa siempre en ejecución,liberando recursos si es
necesario
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 27
Ciclo de ejecución de actividades• Eventos relacionados
// Equivalente a un constructor// Recibe un objeto conteniendo el estado de la interfaz de usuario// guardada en la anterior llamada a onSaveInstanceStatepublic void onCreate(Bundle savedInstaceState) // Se puede utilizar en lugar de la anterior durante el proceso// de restaurar el estado de la interfaz de usuariopublic void onRestoreInstanceState(Bundle savedInstanceState) // Llamada cuando la actividad pasa a estar visiblepublic void onStart() // Llamada antes de cualquier llamada a onStart, excepto la primera vezpublic void onRestart()
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 28
Ciclo de ejecución de actividades• Eventos relacionados
// Cuando una actividad pasa a estar activapublic void onResume() // Cuando una actividad deja de estar activapublic void onPause() // Inmediatamente antes de llamar a onPausepublic void onSaveInstanceState(Bundle savedInstanceState) // Llamada cuando la actividad deja de estar visiblepublic void onStop() // Equivalente a un destructorpublic void onDestroy()
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
© 20112012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android 29
¿Preguntas...?