30
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-2013 Depto. Ciencia de la Computación e IA Plataforma Android Sesión 1: introducción a Android

Arquitectura de Aplicacionesjtech.ua.es/dadm/restringido/android/traspas/sesion01... · 2012-12-11 · // de restaurar el estado de la interfaz de usuario public void onRestoreInstanceState(Bundle

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IA 

Plataforma Android

Sesión 1: introducción a Android

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 2

Puntos a tratar

• Introducción• 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

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 3

Introducción

• Android es un sistema operativo de código abierto para dispositivos móviles.

• Se programa principalmente en Java, y su núcleo está basado en Linux.

• Nombres de versiones inspirados en la repostería, (siguiendo un orden alfabético): Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich, Jelly Bean, etc.

• Responsable del desarrollo de Android “Open Handset Alliance”. Consorcio de empresas: • Operadores telefonía, fabricantes dispositivos• Fabricantes procesadores, microeletrónica• Compañías software, compañías de comercialización

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 4

Aplicaciones Android

• Compuestas por un conjunto heterogéneo de componentes:• Actividades• Servicios• Proveedores de contenidos• Intents• Receptores• Widgets• Notificaciones

• Componentes enlazados mediante AndroidManifest.xml

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 5

El archivo Manifest

• Obligatorio y único• Situado en la carpeta raíz• Formato XML• Objetivos

• Metainformación• Nombre de la aplicación, icono, versión, etc.

• Requisitos• Versión Android, permisos, etc.

• Estructura de la aplicación• Un nodo por cada componente de la aplicación

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 6

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

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

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

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

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 8

Ciclo de ejecución de aplicaciones

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 9

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• Por ejemplo: R.layout.layout_filename

R.id.resource_idR.string.string_name

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 10

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

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 11

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

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 12

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

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

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

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>

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 14

Nuestra primera aplicación

• Creando el proyecto:File → New → Other → Android → Android Application Project

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

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

Nuestra primera aplicación

• Datos del proyecto:• Application name: Ejemplo de aplicación• Project name: EjemploAplicacion• Package name: es.ua.jtech.android.ejemplo• Build SDK: Android 2.2 (API 8) (93% supported)• Minimum Required SDK: API 8

• Configure Launcher Icon:

• Create activity: Yes

• Activity Name: MainActivity• Layout Name: layout_main• Title: Ejemplo

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 16

Nuestra primera aplicación

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 17

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.ejemplo" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <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>

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 18

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

• Desde otros recursos: res/layout/layout_main.xml

→ Se accede igual: @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>

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 19

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

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 20

Nuestra primera aplicación

• Aspecto de la aplicación por defecto

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 21

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

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

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

Nuestra primera aplicación

• Añadir el botón a la interfaz

• Definir recursos (strings.xml)

@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button boton = new Button(this); boton.setText(R.string.texto_boton); setContentView(boton);}

<string name="texto_boton">0</string>

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 23

Nuestra primera aplicación

• Nuevo aspecto de la aplicación

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 24

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

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

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

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”

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 26

Ciclo de ejecución de actividades

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 27

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á mantenerla actividad activa o en

pausa siempre en ejecución,liberando recursos si es

necesario

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 28

Ciclo de ejecución de actividades

• Eventos relacionados

// Equivalente a un constructor// Recibe un objeto con 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()

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

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

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

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAPlataforma Android Introducción a Android - 30

¿Preguntas...?