píldoras android i. intro - 2ª parte
DESCRIPTION
2ª parte de la introducción al desarrollo para Android.Es una pequeña introducción a las acitvites, los intents y los Recursos del sistemaTRANSCRIPT
Píldoras Android I Introducción – 2ª parteSergi Martí nez
OverviewBloques básicos de una aplicación de Android
Activity
Intents
El Manifest
Recursos
Bloques básicos de una aplicaciónActivities
• Son los encargados de mostrar la interfaz y gestionar sus eventosServices
• Se ejecutan en backgroundBroadcast Receivers
• Responden ante sucesos del sistemaContent Providers
• Almacenan información y la ponen a disposición de otras apps
Activity«…si hay que mostrarlo, se muestra, pero mostrarlo pa ná, es tontería»
ActivitiesUna Activity es una pantalla de la interfaz
Las aplicaciones constan de una o más Activity
Cada Activity es reponsable de guardar su estado
Una Activity se encarga de:• Crear una ventana donde colocar la interfaz • Gestionar la interfaz• Responder a los eventos (onClick, onLongClick, etc).
Una Activity básica
Estados de una actividadEl sistema gestiona las actividades como una pila
Una actividad tiene cuatro estados:• Activa: la actividad está en primer plano y tiene el focus (enfoque
de usuario). Se encuentra en lo alto de la pila.• En pausa: la actividad es visible, pero no tiene el focus. Ej: hay un
diálogo sobre ella con el focus retenido.• Detenida: La actividad está tapada por otra aplicación. Mantiene
sus datos.• Destruida: Una actividad detenida ha sido destruida para liberar
memoria y ha perdido sus datos. Hay que recrearla completamente.
Ciclo de vida de una actividad
MétodosMétodo Descripción Siguiente
onCreate() Donde se crea la interfaz. Se le proporciona un bundle con su estado anterior.
onStart
onRestart() Justo antes de un onStart cuando venimos de onStop onStart
onStart() La actividad se hace visible al usuario onResumeonStop
onResume() La actividad está en primer plano interactuando con el usuario
onPause
onPause La actividad va a ser detenida. Se utiliza para guardar información
onResumeonStop
onStop La actividad ya no es visible al usuario. onRestartonDestroy
onDestroy Última llamada antes de que la actividad sea destruida. El método isFinishing() nos ayuda a saber si es final o temporal
Iniciar otra ActivityUso del método startActivity(Intent) o startActivityForResult (Intent, int)
Podemos pasar parametros con Intent.putExtra(int, <type>)
Recibirlos con getIntent().getExtras().get<Type>(clave);
Devolver valores de una ActivityEstablecemos el valor a devolver con setResult(int resultCode) o setResult (int resultCode, Intent data)
La actividad «llamadora» implementa el método onActivityResult(int requestCode, int resultCode, Intent data)
resultCode puede ser uno de estos valores:• RESULT_CANCELED• RESULT_OK• RESULT_FIRST_USER
Intent«… Trata de arrancarlo, Carlos, por tu…»
IntentsAndroid se basa en multitud de pequeños componentes
Estos componentes se comunican via Intents
Mensajes utilizados para notificar a las aplicaciones de eventos• Cambios de Hardware. Ej: tarjeta SD insertada.• Recepción de datos. Ej: llegada de un sms• Eventos de la apliación. Ej: se ha lanzado la aplicación• Etc
Es posible crear nuestros propio intents
Partes de un IntentPartes básicas
• La acción: una constante que indica la acción que se lanza. Ej.: VIEW_ACTION, EDIT_ACTION
• Los datos: uri indicando el recurso asociado. Ej.: content://contacts/people/1
Partes opcionales• Una categoría: agrupa el tipo de Intent• Un tipo MIME: indica el tipo de recurso si no concemos una uri• Un componente: la clase que debe tener el receptor. Obvia las
otras propiedades, pero es más frágil.• Extras: un Bundle con información extra que el receptor va a
necesitar
Ejemplos de IntentANSWER_ACTION
CALL_ACTION
DELETE_ACTION
DIAL_ACTION
EDIT_ACTION
FACTORY_TEST_ACTION
GET_CONTENT_ACTION
INSERT_ACTION
MAIN_ACTION: Inicio de aplicación
PICK_ACTION: permitir a otras apps elegir contenido de la tuya
VIEW_CONTENT: para ver contenido
EDIT_CONTENT: para editar contenido
Categorias de IntentALTERNATIVE_CATEGORY
BROWSABLE_CATEGORY
DEFAULT_CATEGORY
GADGET_CATEGORY
HOME_CATEGORY
LAUNCHER_CATEGORY
PREFERENCE_CATEGORY
SELECTED_ALTERNATIVE_CATEGORY
TAB_CATEGORY
TEST_CATEGORY
Llegando a la actividad adecuadaUna actividad debe cumplir tres reglas para responder un Intent
• La actividad debe soportar la acción especificada• La actividad debe soportar el tipo MIME si lo hay• La actividad debe soportar TODAS las categorias nombradas en el
Intent
Uso de Intent-Filter en el manifest
Ejemplo
Manifest.xml«…un xml para atarlos a todos en las sombras…»
ManifestEl Manifest es el archivo donde la aplicación le dice al sistema que elementos requiere para funcionar
Siempre debe llamarse AndroidManifest.xml y estar en la raiz del proyecto
Entre otras cosas contiene:• Atributos de la aplicación y metadatos• La declaración de actividades y otros componentes• Librerías externas• Permisos
Se puede editar via GUI o editando el XML
Manifest inicial
Versión de la aplicaciónVersionCode es importante para el Market
VersionName es importante para el usuario y/o nosotros
Definición de la actividadDefinimos las actividades y sus intent-filter
Versión del SDKminSdkVersion, maxSdkVersion y targetSdkVersion
Permisos de la aplicación
Avisan al usuario de las acciones que realizará la apliación
Listados en: http://developer.android.com/reference/android/Manifest.permission.html
Recursos«…¡Adelante gadget-o-Layout!…»
RecursosUn recurso es un elemento a utilizar durante la ejecución de la aplicación
Existen diferentes tipos de recursos:• Layouts• Imágenes• Cadenas de texto• Sonidos• Colores• Temas• Animaciones• etc
RecursosSe almacenan en la carpeta resources
Cada tipo de recurso tiene va en una carpeta específica
Utilizan sufijos para determinar que recursos utlizar según contexto (tamaño de pantalla, idioma, orientación, etc.)
Nombre en mínusculas
La extensión se ignora (mismo nombre, diferente extensión se considera duplicado)
La clase RLa clase R es generada y mantenida por el sistema y no debe ser modificada
Contiene un identificador (int) único por cada recurso
Podemos hacer referencia a un recurso en código por R.<tipo>.<nombre>. Ej.: R.layout.main
Nombrar recursos en XMLPara referirnos a un recurso utilizamos la siguiente sintaxis:
@<tipo de recurso>/<nombre del recurso>
Por ejemplo
@string/app_name
Para definir un nombre utilizamos:
@+<tipo de recurso>/<nombre de recurso>
Ejemplo
Fin¿Hay preguntas? ¿no? Pues vamos a comer
www.sergiandreplace.com
@sergiandreplace