3. Bloques básicos de una aplicación Activities Son los encargados de mostrar la interfaz y gestionar sus eventos Services Se ejecutan en background Broadcast Receivers Responden ante sucesos del sistema Content Providers Almacenan información y la ponen a disposición de otras apps
4. Activity «…si hay que mostrarlo, se muestra, pero mostrarlo paná, es tontería»
5. Activities Una 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).
7. Estados de una actividad El 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 focusretenido. 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.
10. Iniciar otra Activity Uso del método startActivity(Intent) o startActivityForResult (Intent, int) Podemos pasar parametros con Intent.putExtra(int, <type>) Recibirlos con getIntent().getExtras().get<Type>(clave);
11. Devolver valores de una Activity Establecemos el valor a devolver con setResult(intresultCode) o setResult (intresultCode, Intent data) La actividad «llamadora» implementa el método onActivityResult(intrequestCode, intresultCode, Intent data) resultCode puede ser uno de estos valores: RESULT_CANCELED RESULT_OK RESULT_FIRST_USER
13. Intents Android se basa en multitud de pequeños componentes Estos componentes se comunican viaIntents 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
14. Partes de un Intent Partes 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
15. Ejemplos de Intent ANSWER_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
17. Llegando a la actividad adecuada Una 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
20. Manifest El 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
22. Versión de la aplicación VersionCode es importante para el Market VersionName es importante para el usuario y/o nosotros
23. Definición de la actividad Definimos las actividades y sus intent-filter
24. Versión del SDK minSdkVersion, maxSdkVersion y targetSdkVersion
25. 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
27. Recursos Un 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
28. Recursos Se 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)
29. La clase R La 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
30. Nombrar recursos en XML Para 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>