Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de...

29
Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles © 2011-2012 Depto. Ciencia de la Computación e IA Plataforma Android Sesión 1: introducción a Android

Transcript of Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de...

Page 1: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 Depto. Ciencia de la Computación e IA 

Plataforma Android

Sesión 1: introducción a Android

Page 2: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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

Page 3: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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

Page 4: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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.

Page 5: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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

Page 6: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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

Page 7: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android ­ 7

Ciclo de ejecución de aplicaciones

Page 8: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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

Page 9: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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

Page 10: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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

Page 11: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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); }}

Page 12: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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>

Page 13: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android ­ 13

Nuestra primera aplicación• Creando el proyecto

Page 14: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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

Page 15: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android ­ 15

Nuestra primera aplicación

Page 16: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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>

Page 17: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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>

Page 18: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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); }}

Page 19: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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

Page 20: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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 

Page 21: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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>

Page 22: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android ­ 22

Nuestra primera aplicación• Nuevo aspecto de la aplicación

Page 23: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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()); } });

Page 24: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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 “last­in­first­out”

Page 25: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android ­ 25

Ciclo de ejecución de actividades

Page 26: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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

Page 27: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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()

Page 28: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 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()

Page 29: Arquitectura de Aplicaciones · Ciencia de la Computación e IA Introducción a Android 6 Ciclo de ejecución de aplicaciones • Las aplicaciones tienen poco control sobre su ejecución

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2011­2012 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android ­ 29

¿Preguntas...?