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

Post on 18-Jul-2020

5 views 0 download

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

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

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

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

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.

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

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

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

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

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

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

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); }}

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>

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

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

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

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>

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>

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); }}

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

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 

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>

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

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()); } });

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”

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

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

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()

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()

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...?