Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles. Plataforma Android

Documentos relacionados
Intents y navegación entre actividades

Ejercicios - Intents y navegación entre actividades

Android y Java para Dispositivos Móviles

Ejercicios - Introducción a Android

Desarrollo de Aplicaciones para Android

Desarrollo de Aplicaciones para Android

Interfaz de usuario. Índice

Servicios Basados en Localización (LBS) Tema 6 Desarrollo de aplicaciones en Android Intents e Intent Filters

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles. Plataforma Android. Sesión 1: introducción a Android

Desarrollo de Aplicaciones para Android

App Android: Desarrollo de aplicaciones en Android.

Interfaces de usuario [Desarrollo de aplicaciones para Android]

Gráficos y multimedia

Introducción a la programación de aplicaciones con Android. Fernando Pérez Costoya

Tutorial appgpsqr. Pedro Antonio Ruiz Cuesta Ignacio Martín Requena

Servicios Web Android

Gráficos y multimedia

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

Teoría Intents Fecha 2016/04/12

DESARROLLO DE APLICACIONES EN ANDROID

Introducción a la programación de aplicaciones con Android. Fernando Pérez Costoya

Grabación de audio/vídeo y gráficos avanzados en Android - Ejercicios

Soluciones Kata TDD. Solución requisito 1

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles Android avanzado

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Desarrollo de Aplicaciones para Android

Android y Java para Dispositivos Móviles

Taller Desarrollo. Tecnólogo Informática - 6to Semestre Montevideo

Programación multimedia y dispositivos móviles. Objetos Parcelables

APELLIDOS, Nombre: // Resto de s e r v i c i o s p ú b l i c o s e n t r e l o s que s e e n c u e n t r a n i n s e r t a r y // b o r r a r //...

Que es un Android Intent?

Ejercicios - Menús, listas y barras de progreso

12. Tipos de atributos

Estructura de Datos Unidad 1: Repaso del Lenguaje Java

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

GOBIERNO DEL PRINCIPADO DE ASTURIAS VICECONSEJERÍA DE PRESUPUESTOS Y ADMINISTRACIÓN PÚBLICA

Soluciones al Examen de Fundamentos de Computadores y Lenguajes

Práctica 3. Android. Tutorial appfotovoz

ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE

PROGRAMACION I Archivos directos

Java Básico. Estructuras de Datos 1. Copyright

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Métodos CON valor de retorno

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

SESIÓN 5 MANEJO DE BASES DE DATOS SQLITE

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 EXCEPCIONES. Ing. Bruno López Takeyas, M.C.

ARREGLOS CLASE VECTOR. Ing. Marina Cipolletti

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Examen de Programación (Grados en Física y Matemáticas)

UNADM. Estructura de datos. Guillermo Duran Garcia AL Actividad 2. Identificación de errores en métodos de ordenación

1. Algunas clases del paquete java.util

Tema 2: Programación basada en Objetos

Introducción al lenguaje Java

MODELO DE IMPLEMENTACIÓN

Sesión 3. TEMA 5. DEFINICIONES DE CLASES

Entiendo los métodos de Java equals y hashcode

Introducción a Java LSUB. 30 de enero de 2013 GSYC

PERSISTE Y CAMPUS VIRTUAL

IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA

Abstracción. Encapsulamiento. Polimorfismo. Objeto. método / objeto / clase / módulo. Separación de las propiedades de un

LA PALABRA CLAVE THIS EN JAVA. CONTENIDO NULL POR DEFECTO DE UN OBJETO. SOBRECARGA DE NOMBRES. EJEMPLOS (CU00654B)

Estructuras de Datos Clase 4 Pilas y colas

Hoja de ejercicios del Tema 9

Concurrencia Monitores. Guillermo Román Díez

Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Exámenes

Android TAG y el principio DRY

POO: Clases y objetos

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

La sintaxis básica para definir una clase es la que a continuación se muestra:

Examen escrito de Programación 1

Soluciones al Examen de Fundamentos de Computadores y Lenguajes

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Estructuras de Datos. 14 de junio de Apellidos

Las FILAS. ING PEDRO BELTRÁN CANESSA Estructuras de Datos 1

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1

Estructura de datos y Programación

Implementación de las Clases Pila, Cola, Lista y Arbol

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Clases y Objetos en C++

INTRODUCCIÓN A LA NOTACIÓN UML Diagramas de clases

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Tema: Clases y Objetos en C#. Parte II.

LUA scripting NXA standard functions

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Práctica 5c. Práctica 5c. José M. Ordax

Examen de Programación II (Ingeniería Informática)

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Consiste en asumir que el usuario podrá usar de forma incorrecta y por tanto el programador deberá contemplar esos errores.

Desarrollo de Aplicaciones Criptográficas en Android

Tipos Recursivos de Datos

Programación Orientada a Objetos en C++

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Leonardo DaVinci. Piccasso La Tempestad. Mona Lisa

Tema: Grafos en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Programación IV. Guía 7

Transcripción:

Plataforma Android Sesión 2: Intents y navegación entre actividades 2011 2012 Depto. Ciencia de la Computación e IA

Puntos a tratar Intents Introducción Lanzar actividades Navegación Tareas launchmode e Intents Afinidad entre tareas Limpiando la pila de actividades Intents y navegación 2

Intents Elemento importante y característico en Android Intercambio de información Lanzar nuevas actividades o servicios De manera explícita o implícita Ventajas Desacoplamiento de componentes Extender fácilmente la funcionalidad de las aplicaciones Intents y navegación 3

Lanzando actividades con Intents Intents explícitos. Parámetros Contexto de la actividad actual El nombre de la clase de la actividad a lanzar Intent intent = new Intent(MiActividad.this, MiOtraActividad.class); startactivity(intent); Una actividad iniciada con startactivity no notificará su finalización Método finish Pulsación del botón BACK Intents y navegación 4

Lanzando actividades con Intents Intents implícitos Se indica la tarea que se desea que se lleve a cabo No se especifica quién lo hará El propio sistema decide la actividad más adecuada en tiempo de ejecución Si existen varias alternativas, se muestran en un menú Las actividades nativas tienen la misma prioridad que el resto (pueden ser reemplazadas) Posibilidad de usar actividades pertenecientes a otras aplicaciones Ejemplo: aplicación con toma de fotografías Intents y navegación 5

Lanzando actividades con Intents El Intent implícito debe incluir: Identificador de la tarea a realizar URI de los datos sobre los que realizar la tarea Opcionalmente: datos extra (método putextra) Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse( tel:666666666 ); startactivity(intent); Intents y navegación 6

Lanzando actividades con Intents Algunos identificadores de acción: ACTION_ANSWER ACTION_CALL ACTION_DELETE ACTION_DIAL ACTION_EDIT ACTION_INSERT ACTION_PICK ACTION_SEARCH ACTION_SENDTO ACTION_WEB_SEARCH ACTION_VIEW Intents y navegación 7

Subactividades Actividades iniciadas con startactivityforresult Producen el disparo de un evento en la actividad padre Se puede devolver información a la actividad padre startactivityforresult Funcionamiento similar a startactivity Requiere código de petición: valor entero que identifica a la subtarea private static final int CODIGO_ACTIVIDAD = 1; Intent intent = new Intent(this, MiOtraActividad.class); startactivityforresult(intent, CODIGO_ACTIVIDAD); Intents y navegación 8

Subactividades Devolución de resultados Utilizar la función setresult antes de finish Parámetros: Código de resultado: Activity.RESULT_OK, Activity.RESULT_CANCELED o un entero El propio resultado (un Intent) Puede haber diferentes llamadas a setresult en una misma actividad Si se destruye la actividad sin haber llamado a setresult se devuelve automáticamente Activity.RESULT_CANCELED Intents y navegación 9

Subactividades botonok.setonclicklistener(new View.onClickListener() { public void onclick(view view) { Uri dato = Uri.parse("content://contactos/" + id_contacto_seleccionado); }); } Intent resultado = new Intent(null, dato); resultado.putextra(datos_correctos, datoscorrectos); resultado.putextra(telefono_seleccionado, telefonoseleccionado); setresult(result_ok, resultado); finish(); botoncancelar.setonclicklistener(new View.OnClickListener() { public void onclick(view view) { setresult(result_canceled, null); finish(); } }); Intents y navegación 10

Subactividades Manejador del evento en la clase padre private static final int PRIMERA_ACTIVIDAD = 1; @Override public void onactivityresult(int requestcode, int resultcode, Intent data) { super.onactivityresult(requestcode, resultcode, data); switch(requestcode) { case PRIMERA_ACTIVIDAD: if (resultcode == Activity.RESULT_OK) { Uri dato = data.getdata(); boolean datoscorrectos = data.getbooleanextra(datos_correctos, false); String telefono = data.getstringextra(telefono_seleccionado); } break; } } Intents y navegación 11

Respondiendo Intents implícitos Intent Filter Medio para registrar actividades como capaces De realizar una determinada tarea Con unos datos concretos Elemento <intent filter> en el Manifest de la aplicación: <activity android:name=".miactividad" android:label="mi Actividad"> <intent-filter> <action android:name="es.ua.jtech.intent.action.haz_algo"/> <category android:name="android.intent.category.default"/> <category android:name="android.intent.category.alternative_selected"/> <data android:mimetype="vnd.miaplicacion.cursor.item/*"/> </intent-filter> </activity> Intents y navegación 12

Acceder a la información de un Intent Dentro de oncreate: Intent intent = getintent(); Acceso a los datos del Intent: String accion = intent.getaction(); Uri datos = intent.getdata(); [TIPO] datoextra = intent.get[tipo]extra(identificador); Intents y navegación 13

Navegación: tarea Colección de actividades con un objetivo común Se puede interpretar como una aplicación independiente Cada una tiene su propia pila de actividades Cuando una actividad se destruye, se saca la primera de la pila Cuando se inicia una nueva actividad, la activa pasa al tope de la pila Conclusión: las actividades no se reordenan en la pila Conclusión: puede haber más de una instancia de una actividad en la pila Cuando la pila de actividades queda vacía, la tarea se destruye Sólo una tarea en primer plano; el resto mantienen sus actividades intactas (si no son necesarios más recursos) Intents y navegación 14

Navegación: tarea Ejemplo de más de una instancia de actividad por tarea Intents y navegación 15

Navegación: tarea Posibles modificaciones en el funcionamiento estándar del lanzamiento de actividades: Sólo una instancia de una determinada actividad Iniciar una actividad en una tarea independiente Eliminar actividades de la pila Cómo? Atributo launchmode de <activity> en el Manifest de la aplicación Flags en Intents Intents y navegación 16

El atributo launchmode Valores standard: comportamiento por defecto singletop: el Intent se envía a la instancia ya existente si está activa singletask: se crea una tarea y se añade a ella la nueva tarea (si ya existía una instancia en una tarea separada se le envía el Intent) Intents y navegación 17

El atributo launchmode Valores: singleinstance: como el caso anterior, pero nunca se lanza una nueva actividad en la tarea recién creada Intents y navegación 18

Flags para Intents al lanzar actividades Valores: FLAG_ACTIVITY_NEW_TASK: equivalente a singletask FLAG_ACTIVITY_SINGLE_TOP: equivalente a singletop FLAG_ACTIVITY_CLEAR_TOP: si ya existe una instancia de la actividad se destruyen las que hay sobre ella en la pila FLAG_ACTIVITY_REORDER_TO_FRONT: si ya existe una instancia de la actividad se lleva a primer plano FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS: al lanzar la actividad en una nueva tarea, ésta no se muestra en el listado de tareas FLAG_ACTIVITY_FORWARD_RESULT Intents y navegación 19

Flags para Intents al lanzar actividades Valores FLAG_ACTIVITY_MULTIPLE_TASK: en conjunción con NEW_TASK, se crea siempre una nueva instancia en una nueva tarea FLAG_ACTIVITY_NO_ANIMATION: desactiva la animación de transición de una actividad a la siguiente Intents y navegación 20

Afinidad entre actividades Medio para indicar a qué tarea desea pertenecer una actividad Por defecto todas las actividades de una aplicación tienen afinidad con el resto Por defecto todas las actividades de una aplicación pertenecen a la misma tarea Otras posibilidades: Actividades de una misma aplicación pertenecen a diferentes tareas Actividades de diferentes aplicaciones forman parte de una misma tarea Intents y navegación 21

Afinidad entre actividades Atributo taskaffinity del elemento <activity> del Manifest Valor: identificador en forma de cadena Valor por defecto: nombre de paquete de la aplicación Se tiene en cuenta cuando El Intent usa el flag FLAG_ACTIVITY_NEW_TASK Cuando el atributo allowtaskreparenting de la actividad valga true Medio por el que se pueden distribuir varias aplicaciones en un único paquete.apk Intents y navegación 22

Limpiar la pila de actividades Comportamiento por defecto: la pila de actividades se vacía si la tarea está sen segundo plano mucho tiempo Atributos de <activity> en el Manifest: alwaysretaintaskstate: se desactiva el comportamiento por defecto cleartaskonlaunch: se eliminan todas las actividades de la tarea siempre que pase a segundo plano (lo contrario al anterior) finishtaskonlaunch: equivalente al atributo anterior, pero para una actividad individual nohistory: la actividad es siempre destruida (y no se guarda en la pila) cuando pasa a segundo plano Intents y navegación 23

Preguntas...? Intents y navegación 24