Para ayudar al diseñador a resolver este problema, en la versión 3.0 de Android aparecen los fragments. Un fragment está formado por la unión de varias vistas para crear un bloque funcional de la interfaz de usuario. Una vez creados los fragments, podemos combinar uno o varios fragments dentro de una actividad, según el tamaño de pantalla disponible.
El uso de fragments puede ser algo complejo, por lo que recomendamos dominar primero conceptos como actividad, vista y layout antes de abordar su aprendizaje. No obstante, es un concepto importante en Android y todo programador en esta plataforma ha de saber utilizarlos. Véase el anexo A para aprender más sobre fragments.
1.10.5. Servicio (Service)
Un servicio es un proceso que se ejecuta “detrás”, sin la necesidad de una interacción con el usuario. Es algo parecido a un demonio en Unix o a un servicio en Windows. Se utilizan cuando queramos tener en ejecución un código de manera continua, aunque el usuario cambie de actividad. En Android disponemos de dos tipos de servicios: servicios locales, que son ejecutados en el mismo proceso, y servicios remotos, que son ejecutados en procesos separados. Los servicios se estudian en el capítulo 8.
1.10.6. Intención (Intent)
Una intención representa la voluntad de realizar alguna acción, como realizar una llamada de teléfono o visualizar una página web. Se utiliza cada vez que queramos:
■ Lanzar una actividad
■ Lanzar un servicio
■ Enviar un anuncio broadcast
■ Comunicarnos con un servicio
Los componentes lanzados pueden ser internos o externos a nuestra aplicación. También utilizaremos las intenciones para el intercambio de información entre estos componentes.
1.10.7. Receptor de anuncios (Broadcast Receiver)
Un receptor de anuncios recibe anuncios broadcast y reacciona ante ellos. Los anuncios broadcast pueden ser originados por el sistema (por ejemplo: Batería baja, Llamada entrante) o por las aplicaciones. Las aplicaciones también pueden crear y lanzar nuevos tipos de anuncios broadcast. Los receptores de anuncios no disponen de interfaz de usuario, aunque pueden iniciar una actividad si lo estiman oportuno. Los receptores de anuncios se estudian en el CAPÍTULO 8.
1.10.8. Proveedores de contenido (Content Provider)
En muchas ocasiones, las aplicaciones instaladas en un terminal Android necesitan compartir información. Android define un mecanismo estándar para que las aplicaciones puedan compartir datos sin necesidad de comprometer la seguridad del sistema de ficheros. Con este mecanismo podremos acceder a datos de otras aplicaciones, como la lista de contactos, o proporcionar datos a otras aplicaciones. Los ContentProvider se estudian en el capítulo 9.
1.11. Documentación y aplicaciones de ejemplo
Aunque en este libro vas a aprender mucho, resultaría imposible tocar todos los aspectos de Android y con un elevado nivel de profundidad. Por lo tanto, resulta imprescindible que dispongas de fuentes de información para consultar los aspectos que vayas necesitando. En este apartado te proponemos dos alternativas: el acceso a documentación sobre Android y el estudio de ejemplos.
1.11.1. Dónde encontrar documentación
Puedes encontrar una completa documentación del SDK localmente en:
…\sdk\docs\index.html
Se incluye la descripción de todas las clases (Develop > Reference), conceptos clave y otros tipos de recursos. Esta documentación también está disponible en línea a través de Internet:
Muchos de los recursos utilizados en este libro puedes encontrarlos en:
Para resolver dudas puntuales sobre programación te recomendamos la siguiente web de preguntas y respuestas:
1.11.2. Repositorio de ejemplos en GitHub
Otra opción muy interesante para aprender nuevos aspectos de programación consiste en estudiar ejemplos. Google ha preparado un repositorio de ejemplos en GitHub que pueden ser instalados desde Android Studio.
1. Selecciona File > New > Import Sample… Aparecerá la siguiente ventana:
Los proyectos se encuentran clasificados en categorías: Admin, Background, Connectivity, Content, Input, Media, Notification, … Selecciona un proyecto de alguna de estas categorías. A la derecha podrás leer una breve descripción o ver una vista previa.
2. Pulsa Next para pasar a la siguiente ventana. Podrás configurar el nombre de la aplicación, explorar el proyecto accediendo a su sitio web en GitHub e indicar la carpeta donde quieres descargarlo:
3. Pulsa Finish y a continuación ejecuta el proyecto seleccionado.
1.12. Depurar
Programación y errores de código son un binomio inseparable. Por lo tanto, resulta fundamental sacar el máximo provecho a las herramientas de depuración.
1.12.1. Depurar con el entorno de desarrollo
Android Studio integra excelentes herramientas para la depuración de código. Para probarlas, introduce un error en tu código modificando MainActivity de forma que en método onCreate() tenga este código:
Este cambio introduce en Java un NullPointerException y en Kotlin un UninitializedPropertyAccessException. Si ahora ejecutas tu aplicación, te aparecerá algo similar a:
Pulsa Cerrar para finalizar la aplicación. Para averiguar más sobre el error, inserta un punto de ruptura (breakpoint) en el código fuente en la línea o.toString() (el breakpoint se