Está en la página 1de 100

ANDROID PROFESIONAL ®, CUARTA EDICIÓN

INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXI

CAPÍTULO 1 Hola, Android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

CAPITULO 2 Empezando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

CAPÍTULO 3 Aplicaciones y actividades y fragmentos, ¡por Dios! . . . . . . . . . . . . 57

CAPÍTULO 4 Definiendo el manifiesto y Gradle Android Archivos de creación,

Recursos y exteriorizar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

CAPÍTULO 5 La construcción de interfaces de usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

CAPÍTULO 6 Las intenciones y los receptores de radiodifusión. . . . . . . . . . . . . . . . . . . . . . . . . . . 177

CAPÍTULO 7 Uso de los recursos de Internet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

CAPÍTULO 8 Archivos, estado de ahorro, y preferencias del usuario. . . . . . . . . . . . . . . . . . . . 245

CAPÍTULO 9 Creación y uso de bases de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

CAPÍTULO 10 Los proveedores de contenido y de búsqueda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

CAPÍTULO 11 Trabajando en los antecedentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

CAPÍTULO 12 La aplicación de la filosofía de diseño de Android. . . . . . . . . . . . . . . . 433

CAPÍTULO 13 La implementación de una experiencia de usuario moderna Android. . . . . . . . . . . . 463

CAPÍTULO 14 Personalización avanzada de la interfaz de usuario. . . . . . . . . . . . . . 501

CAPÍTULO 15 Ubicación, conciencia contextual, y Cartografía. . . . . . . . . . . . . . . 541

CAPÍTULO 16 Sensores de hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619

CAPÍTULO 17 Audio, video y uso de la cámara. . . . . . . . . . . . . . . . . . . . . . . 665

CAPÍTULO 18 La comunicación con Bluetooth, NFC, Wi-Fi y Peer-to-Peer. . . 713

CAPÍTULO 19 Invadir la pantalla de inicio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743

CAPÍTULO 20 Desarrollo avanzado de Android. . . . . . . . . . . . . . . . . . . . . . . . . . 787

CAPÍTULO 21 Liberar, distribución y monitoreo de aplicaciones. . . . . . . . . . 825

ÍNDICE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863

www.allitebooks.com
PROFESIONAL

Androide ®

Cuarta edición

www.allitebooks.com
PROFESIONAL

Androide ®

Cuarta edición

Reto Meier Ian


Lago

www.allitebooks.com
Android profesional ®, Cuarta edición

Publicado por
John Wiley & Sons, Inc. 10475
Crosspoint Boulevard, Indianapolis,
IN 46256
www.wiley.com

Copyright © 2018 por John Wiley & Sons, Inc., Indianápolis, Indiana Publicado

simultáneamente en Canadá ISBN: 978-1-118-94952-8 ISBN: 978-1-118-94954-2 (ebk)

ISBN: 978-1- 118-94953-5 (ebk)

Fabricado en los Estados Unidos de América 10 9 8 7 6 5

4321

Ninguna parte de esta publicación puede ser reproducida, almacenada en un sistema de recuperación o transmitida en cualquier forma o por cualquier
medio, ya sea electrónico, mecánico, fotocopia, grabación, escaneo o de otro tipo, a excepción de lo establecido en las Secciones 107 o 108 del 1976
autor de Estados Unidos Ley, sin que el permiso previo por escrito del editor, o autorización mediante el pago de la tarifa correspondiente por copia al
copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646 -8600. Las solicitudes para la Editorial autorización
deberán dirigirse al Departamento de Permisos, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748 hasta 6011, fax (201) 748-6008,
o en línea en http://www.wiley.com/go/permissions.

Límite de responsabilidad / Exención de garantía: El editor y el autor no hacen ninguna representación o garantía con respecto a la exactitud o integridad de los
contenidos de este trabajo y específicamente renuncian a todas las garantías, incluyendo sin limitación, garantías de idoneidad para un propósito en particular. No hay
garantía puede ser creado o ampliado por ventas o materiales promocionales. Los consejos y estrategias contenidas en este documento pueden no ser adecuados para
cada situación. Este trabajo se vende con el entendimiento de que la editorial no se dedica a prestar servicios legales, contables u otros servicios profesionales. Si se
requiere asistencia profesional, los servicios de un profesional competente debe buscarse. Ni el editor ni el autor será responsable de los daños derivados QUEDAN. El
hecho de que un sitio de la organización o en la web se hace referencia en este trabajo como una citación y / o una fuente potencial de más información no significa que
el autor o el editor respalda la información de la organización y su página Web puede proporcionar o recomendaciones que pueda hacer . Además, los lectores deben
ser conscientes de que los sitios web de Internet que figuran en este trabajo pueden haber cambiado o desaparecido entre el momento en este trabajo fue escrito y
cuando se lee.

Para obtener información general sobre nuestros productos y servicios por favor, póngase en contacto con nuestro departamento de atención al cliente dentro de los Estados Unidos

al (877) 762-2974, fuera de los Estados Unidos al (317) 572-3993 o fax (317) 572 a 4002. Wiley publica en una variedad de formatos impresos y electrónicos, y la impresión bajo

demanda. Parte del material incluido con las versiones estándar de impresión de este libro no puede ser incluido en los libros electrónicos o en la impresión bajo demanda. Si este

libro se refiere a los medios de comunicación como un CD o DVD que no se incluye en la versión que haya adquirido, es posible que descargar este material en http://booksupport.wiley.com.

Para obtener más información acerca de los productos Wiley, visita www.wiley.com.

Biblioteca del Congreso Número de Control: 2018951986

Marcas registradas: Wiley, el logotipo de Wiley, Wrox, el logotipo de Wrox, Programador a Programador, y la imagen comercial son marcas comerciales o marcas
comerciales registradas de John Wiley & Sons, Inc. y / o sus filiales, en los Estados Unidos y en otros países y no siempre ser utilizados sin autorización escrita. Android
es una marca comercial registrada de Google, LLC Todas las demás marcas son propiedad de sus respectivos dueños. John Wiley & Sons, Inc., no está asociado con
ningún producto o compañía mencionados en este libro.

www.allitebooks.com
A Kris.

- Reto

Para Andrea y Hannah.

- Ian

www.allitebooks.com
SOBRE LOS AUTORES

RETO MEIER ha estado trabajando para ayudar a los desarrolladores de Android crean las mejores aplicaciones posibles para sus usuarios

desde el lanzamiento de Android inicial en 2007. Reto creció en Perth, Australia Occidental, y luego pasó “los próximos 18 meses” en Londres
para un total de 6 años, antes de establecerse en la bahía de San Francisco con su esposa en 2011.

Reto ha pasado 10 años como asistente de desarrolladores de Google, lo que contribuye artículos, formación en línea, discursos de la conferencia, y
videos de YouTube a la comunidad de desarrolladores.

Antes de los teléfonos inteligentes se inventaron, Reto pasó más de 10 años como desarrollador de software en diversas industrias, incluyendo

petróleo y gas costa afuera y las finanzas.

Usted puede aprender más acerca de los pensamientos de Reto en el desarrollo de Android, hacerle preguntas, y ver fotografías de sus
gatos en Twitter en www.twitter.com/retomeier, donde comparte más de lo que probablemente debería, y leer los pensamientos más largas en
medio a medium.com/@retomeier.

IAN LAGO ha vivido en nueve estados de los Estados Unidos antes de instalarse en la bahía de San Francisco en 2013.

Ian es un miembro del equipo Kit de herramientas de Android en Google, enfocada en proveer las bibliotecas y APIs necesarios para el

desarrollo de Android moderna. Su experiencia anterior incluye que como abogado Android desarrollador, desarrollador de aplicaciones

Android, y desarrollador de aplicaciones empresariales atrás cuando Android no era ni siquiera una opción. Se puede conectar con Ian

en Google+ ( plus.google.com/+IanLake) o Twitter ( www.twitter

. com / ianhlake) para aprender más acerca de su maravillosa familia, aficiones (sobre todo el desarrollo de Android), y los intereses.

Mientras Reto e Ian trabajan en Google, los puntos de vista y opiniones expresadas en este libro son exclusivamente suyas y no representan
necesariamente las de su empleador.
Acerca de los editores TÉCNICAS

DANIEL Ulery es Senior Software Engineer que vive cerca de Lewiston, Idaho. Su experiencia incluye proyectos de ingeniería de software

utilizando tecnologías tales como Enterprise Java, C # WinForms, SQL Server, Frambuesa Pi, y Android. Dan recibió su Licenciatura en Ciencias
en Ciencias de la Computación de la Universidad de Idaho en 2004. Cuando no está trabajando en proyectos de software, lo más probable es que
trabaja en uno de los muchos proyectos de bricolaje.

ED WOODWARD es un gestor senior de desarrollo y Android Developer para OpenStax en la Universidad Rice. Actualmente dirige el equipo
DevOps y es el plomo en el equipo de tecnología de Business Intelligence junto con el desarrollo de aplicaciones para Android de
OpenStax. Antes de unirse a OpenStax, Ed era un / Aplicación Arquitecto vicepresidente JPMorganChase. Ed era un director de la banda
en la escuela secundaria y el nivel de secundaria durante varios años antes de pasar a la programación.

CHAIM KRAUSE es un programador informático experto con más de 30 años de experiencia para probarlo. Ha trabajado como ingeniero de

soporte técnico de plomo para ISPs ya en 1995, como ingeniero de soporte para desarrolladores de alto nivel con Borland para Delphi, y ha
trabajado en Silicon Valley por más de una década en varios papeles, incluyendo ingeniero de soporte técnico e ingeniero de soporte para
desarrolladores. En la actualidad es un especialista en la simulación militar para el Comando del Ejército de Estados Unidos y Estado Mayor,
trabajando en proyectos tales como el desarrollo de los juegos serios para su uso en los ejercicios de entrenamiento. También es autor de varios
cursos de formación de vídeo en temas de Linux, y ha sido un revisor técnico de más de 20 libros, incluyendo Amazon Web Services para
desarrolladores móviles ( Sybex, 2017) y Swift profesional ( wrox,

2015). Parece lógico, entonces, que iba a ser un ávido jugador y tienen su propia electrónica de laboratorio y sala de servidores
en su sótano. En la actualidad reside en Leavenworth, Kansas, con su bella pareja de Ivana y una colección de cuatro patas
compañeros de viaje: sus dos perros, Dasher y Minnie, y sus tres gatos, Pudems, Talyn, y Alaska.

MURAT YENER es un friki del código, confirmador de código abierto, Campeón de Java, y Experto desarrollador ex-Google en Android,
que está trabajando en Google. Él es el autor de Estudio experto Android ( Wiley,
2016) y Patrones de Java EE Profesional (Diseño Wiley, 2015). Tiene una amplia experiencia en el desarrollo de Android, Java,
aplicaciones web, JavaEE y OSGi, además de los cursos de enseñanza y tutoría. Murat era un confirmador Eclipse y uno de los
committers iniciales del proyecto Eclipse Libra. Murat había sido líder del grupo de usuarios al GDG GDG en Estambul y San
Francisco, organizar, participar y hablar en eventos. También es un ponente habitual en conferencias importantes, tales como
Droidcon, JavaOne, y Devoxx.
CRÉDITOS

Editor de proyectos director comercial


John Sleeva Christie Hilbrich

editores técnicos EDITOR EJECUTIVO


Daniel Ulery Ed Jim Minatel
Woodward Jaim
Krause Murat COORDINADOR DEL PROYECTO, LA CUBIERTA

Yener Brent salvaje

EDITOR DE PRODUCCIÓN CORRECTOR DE PRUEBAS

Barath Kumar Rajasekaran Nancy Bell

EDITOR DE COPIA INDEXADOR

Kimberly A. Cofer Johnna VanHoose Dinse

JEFE DE PRODUCCIÓN DISEÑADOR DE LA PORTADA

Kathleen Wisor Wiley

ACTIVACIÓN Y CONTENIDO gerente de operaciones IMAGEN DE PORTADA

© 1971yes / iStock.com
Pete Gaughan
EXPRESIONES DE GRATITUD

PRIMERA, me gustaría agradecer a mi esposa KRISTY, cuyo amor y apoyo que hace posible todo lo que hago. Un gran agradecimiento a mis

amigos y colegas en Google, en particular toda la gente maravillosa en el equipo de Android, sin los cuales tendríamos nada que escribir, y

el equipo de relaciones con los desarrolladores que me inspiran todos los días.

También agradezco a nuestro ejército de los editores técnicos, entre ellos Dan Ulery, Ed Woodward, Jaim Krause, Murat Yener,
James Harmon, y Chad Darby, sin los cuales este libro contendría muchos más errores de lo que hace. Los que quedan son
totalmente mi culpa. Gracias a todo el equipo de Wrox, especialmente John y Jim Sleeva Minatel, cuya paciencia y apoyo en
conseguir este libro fue completado no trivial.

Un extra grande agradecimiento va a la increíble comunidad Android, compuesto por desarrolladores apasionados, generosos, y que trabajan
duro que parecen pasar el mayor tiempo ayudarse mutuamente ya que la creación de aplicaciones sorprendentes. Sus esfuerzos han sido
fundamentales en la toma de Android el enorme éxito que es. Gracias.

- Reto

MI FAMILIA, Andrea y Ana, son los que hacen todo lo que vale la pena. Sin su apoyo, yo no sería capaz de hacer mucho de nada,
y mucho menos escribir este libro.

Me gustaría hacer eco de agradecimiento de Reto para todos los involucrados en la publicación y hacer realidad este libro, el equipo de Android por darnos

mucho que hablar, y la comunidad de desarrolladores de Android para compartir nuestra pasión en torno a la construcción de mejores aplicaciones.

- Ian
CONTENIDO

INTRODUCCIÓN XXXI

Capítulo 1: Hola, androide 1

Desarrollo de aplicaciones Android 1


Un poco de historia 2
El pasado no muy lejano 3
La vida en el futuro 3
El ecosistema Android 3
Pre-instalado aplicaciones de Android 4
Características del SDK de Android 5
Lo que hace Android Run On? 6
¿Por qué desarrollar para móviles? 6
¿Por qué desarrollar para Android? 7
Al presentar el Marco de Desarrollo 7
Qué contiene la caja 8
La comprensión de la pila de software Android 8
El tiempo de ejecución de Android 10
Arquitectura de aplicaciones Android 11
Bibliotecas Android 12

Capítulo 2: Primeros pasos 13

Para comenzar el desarrollo de aplicaciones para Android 14


Desarrollar para Android 15
Lo que usted necesita para comenzar 15
Creación de su primera aplicación Android 20
Introducción a la escritura aplicaciones de Android con Kotlin 35
Usando el paquete de biblioteca androide de la ayuda 36
Desarrollo para dispositivos móviles e integrados 39
Consideraciones de diseño de hardware-impuesta 39
Teniendo en cuenta el entorno del usuario 43
Desarrollar para Android 44
Herramientas de desarrollo de Android 48
Android Studio 49
El Administrador de dispositivos Android Virtual 51
El emulador de Android 51
CONTENIDO

Profiler Android 52
El puente de depuración de Android 54
APK Analizador 54
La herramienta de pelusa 55
Mono, mono Runner, y Espresso Prueba UI 55
Gradle 56

Capítulo 3: aplicaciones y actividades y fragmentos, ¡por Dios!


57

Aplicaciones, actividades y fragmentos 58


Los componentes de una aplicación Android 58
El ciclo de vida de aplicaciones Android, Estados Prioridad y Proceso 59
Presentación de la clase de aplicación Android 61
Una mirada más cercana a Actividades Android 61
Creación de Actividades 62
Utilizando el AppCompatActivity 63
El ciclo de actividad de la vida 64
En respuesta a la presión de memoria 71
La introducción de fragmentos 73
La creación de nuevos fragmentos 73
El Ciclo de Vida Fragmento 74
Al presentar el Director Fragmento 79
La adición de fragmentos de Actividades 79
La comunicación entre los fragmentos y Actividades 85
Sin fragmentos de Interfaces de Usuario 86
La construcción de una aplicación de Visor de terremoto 87

Capítulo 4: Definir el Android manifiesto y Gradle archivos de creación y


externalización recursos 95

El Manifiesto, archivos de creación y Recursos 96


Al presentar el manifiesto de Android 96
Configuración de la construcción Gradle 101
Archivo de configuración Gradle 101
Proyecto Gradle Construir Archivo 102
Módulo Gradle Archivos de creación 102
exteriorización de Recursos 107
Creación de recursos 108
Uso de los recursos 119
Creación de recursos para diferentes idiomas y Hardware 122
Los cambios de configuración de ejecución 126

xviii
CONTENIDO

Capítulo 5: construcción de interfaces de usuario 129

Fundamental Diseño Android 130


Diseño independiente de la densidad 130
Fundamentos de la interfaz de usuario de Android 131
Asignación de interfaces de usuario a Actividades 132
La introducción de Presentaciones 132
Definición de Presentaciones 134
Utilizar presentaciones para crear interfaces de usuario independiente del dispositivo 136
optimización de diseños de 139
La caja de herramientas de widgets de Android 143
Trabajar con listas y cuadrículas 144
Ver reciclador y Controladores de Distribución 145
La introducción de adaptadores 146
Volviendo a la aplicación de Visor de terremoto 149
La introducción de enlace de datos 150
Permitiendo la unión de Datos 151
Las variables de enlace de datos 152
Enlace de datos para la aplicación de Visor de terremoto 153
La creación de nuevas vistas 155
Modificación existentes Vistas 155
Creación de controles compuestas 159
Creación de controles de compuestos simples como un diseño 161
Crear vistas personalizadas 162
El uso de controles personalizados 176

Capítulo 6: los intentos y receptores de radiodifusión 177

El uso de los Fines y receptores de radiodifusión 178


El uso de intentos de poner en marcha actividades 178
A partir explícitamente Nuevas actividades 179
Intentos implícitos y finales de ejecución Encuadernación 179
Determinar si un Intento resolverá 180
Devolución de resultados de las actividades 181
El uso de acciones de la plataforma-Nativa de poner en marcha actividades 184
La creación de Intención Filtros para recibir Intentos implícitos 186
Definición de un filtro de Intención 186
Intención utilizando filtros para plug-ins y extensibilidad 194
La introducción de Linkify 198
Tipos nativa Linkify Enlace 198
Creación de un enlace Cuerdas 199

xix
CONTENIDO

Uso del filtro de ajuste 200


Utilizando el filtro de transformación 200
Usando Intentos de difusión de acontecimientos 200
Difusión de Eventos con Propósitos 201
La escucha de emisiones de intención con los receptores de radiodifusión 202
El registro de los receptores de radiodifusión en el Código 203
El registro de los receptores de radiodifusión, en su manifiesto de aplicación 204
La gestión de los receptores del manifiesto en tiempo de ejecución 204
Dispositivos de Monitorización de estado a través de cambios Intentos de difusión 205
Al presentar el Gestor de programas locales 207
La introducción de pendientes Intentos 208

Capítulo 7: Uso los recursos de Internet 211

Conexión a Internet 211


Conexión, descarga y recursos de análisis de internet 212
¿Por qué construir una aplicación nativa de Internet? 212
Conexión a un recurso de Internet 213
Realización de operaciones de red en Temas de fondo utilizando Visualización de modelos,
datos vivos, y tareas asíncronas 214
Análisis de XML Utilizando el Analizador de extracción XML 219
Conexión del Visor terremoto a Internet 220
El análisis de JSON JSON Uso del Analizador 228
Usando el administrador de descargas 233
Descargando archivos 233
Personalización de notificaciones de descarga Administrador 235
Especificación de una ubicación de descarga 237
Cancelación y extracción de Descargas 238
Consulta del administrador de descargas 238
Mejores prácticas para la descarga de datos sin agotar la batería 241 Una Introducción a los
servicios de Internet y la computación en nube 242

Capítulo 8: archivos, guardar estado y las preferencias del usuario 245

Guardar archivos, estados y Preferencias 246


Guardar y restaurar la actividad y el fragmento Instancia Estado Uso de los
manipuladores de ciclo de vida 246
Retener Instancia Estado con fragmentos sin cabeza y Visualización de
modelos 248
Ver modelos y datos en directo 248
Los fragmentos sin cabeza 251
Creación y almacenamiento de preferencias compartidas 252
Recuperando Preferencias compartidas 253

xx
CONTENIDO

La introducción de la preferencia de cambio compartidas oyentes 254


Configuración de copia de seguridad automática de los archivos de aplicación y

preferencias compartidas 254


La construcción de una interfaz de usuario de Preferencia 256
El uso de la biblioteca de soporte Preferencia 256
La definición de un diseño de la pantalla de preferencias en XML 257
Presentación de la Fragmento Preferencia 260
Creación de una actividad Ajustes para el Monitor de terremoto 261
Incluyendo archivos estáticos como recursos 267
Trabajar con el sistema de archivos 267
Herramientas de gestión de archivos 267
Creación de archivos de Aplicación Específica-Almacenamiento interno 268
Creación de archivos de almacenamiento externo de Aplicación Específica 268
Acceso a Directorios público a través de ámbito de acceso a directorios 270
Compartir archivos mediante Proveedor Archivo 274
La creación de un Proveedor de archivos 274
Compartir un archivo mediante un Proveedor de archivos 275
Al recibir un archivo de un Proveedor de archivos 275
Acceso a los archivos desde otras aplicaciones utilizando el marco de
Acceso de almacenamiento 275
Solicitud de acceso a los archivos temporales 276
Solicitud de acceso permanente a archivos 277
Solicitud de acceso a directorios 277
Crear nuevos archivos 278
Uso de permisos basados ​en URI 278

Capítulo 9: Creación y uso de bases de datos 281

Introducir estructurado de almacenamiento de datos en Android 282


El almacenamiento de datos utilizando la habitación Persistencia Biblioteca 282
La adición de la habitación Persistencia Biblioteca 283
La definición de una base de datos de habitaciones 284
La persistencia de objetos complejos utilizando el tipo de Convertidores 286
La definición de la sala de Interacciones bases de datos con Data Access Objects 288
Realización de la sala de interacciones de bases de datos 291
Seguimiento de los cambios resultado de la consulta con los datos vivos 292
Los terremotos que persiste a una base de datos con el sitio 294
Trabajar con bases de datos SQLite 298
Validación de entrada y de inyección SQL 299
Cursores y valores de contenido 299
La definición de un contrato de base de datos 300
Presentación de la SQLiteOpenHelper 300

xxi
CONTENIDO

La apertura de bases de datos SQLite con el Abierto de ayudante 302


Apertura y bases de datos SQLite Creación Sin el Abierto de ayudante 303
Añadir, Actualizar y Borrar registros 303
Consultar una base de datos 305
La extracción de valores de un cursor 307
Presentación de la base de datos en tiempo real Firebase 308
Añadiendo Firebase a su aplicación 309
La definición de una base de datos Firebase y definir reglas de acceso 311
Cómo agregar, modificar, eliminar y consultar datos de una base de datos en
tiempo real Firebase 313

Capítulo 10: Los proveedores de contenido y la búsqueda 317

La introducción de los proveedores de contenidos 318


¿Por qué debo utilizar proveedores de contenido? 318
Creación de proveedores de contenido 319
La creación de la base de datos del proveedor de contenidos 320
El registro de proveedores de contenido 321
La publicación de URI de la dirección de su Proveedor de Contenido 321
La implementación de consultas proveedor de contenido 322
Transacciones proveedor de contenido 325
Compartir archivos con un proveedor de contenidos 327
La adición de los requisitos de permisos a los proveedores de contenidos 328
El acceso a proveedores de contenido con contenido Resolvers 330
Consulta de Proveedores de Contenido 330
Cancelación de consultas 333
Consulta de contenido de forma asíncrona con un cursor cargador 333
Adición, eliminación y actualización de contenidos 336
Para acceder a los archivos almacenados en proveedores de contenido 338
El acceso a proveedores de contenido con permisos restringidos 339
El uso de Android nativo proveedores de contenido 341
Acceso al registro de llamadas 341
Mediante el proveedor de contenido multimedia tienda 342
Uso de los contactos Proveedor de Contenido 344
Calendario mediante el proveedor de contenido 351
Adición de búsqueda a su aplicación 354
La definición de su búsqueda de metadatos 354
Creación de una actividad Resultados de la búsqueda 355
La búsqueda de un proveedor de contenidos 357
Utilizando la búsqueda Ver Widget 360
Proporcionar sugerencias de búsqueda mediante un proveedor de contenido 362
Buscar en la base de datos de Monitor de terremoto 366

xxii
CONTENIDO

Capítulo 11: trabajando en segundo plano 377

Trabajando en los Antecedentes 378


Uso de hilos de fondo 379
Uso de las tareas asíncronas para ejecutar tareas de forma asíncrona 379
Manual de Creación de hilos que utilizan Handler Hilos 383
Programación de trabajos de fondo 385
La creación de un servicio de empleo para el programador de trabajo 386
Planificación de tareas con el programador de trabajo 388
Planificación de tareas con la base del fuego trabajo del despachador 391
Programación Trabaja con el gestor de trabajo 393
Un terremoto-Monitoreo de empleo Ejemplo Servicio 396
El uso de notificaciones para notificar a los usuarios 401
Al presentar el Administrador de notificaciones 401
Trabajar con canales de notificaciones 402
La creación de Notificaciones 403
El establecimiento de prioridades de una Notificación 407
Adición de acciones de notificación 411
Adición de acciones respuesta directa 412
La agrupación de varias notificaciones 413
Notificaciones añadiendo al monitor del terremoto 414
Usando Firebase mensajería en la nube 417
Notificaciones activación remota con base de fuego Notificaciones 418
Recepción de datos con Firebase mensajería en la nube 421
El uso de alarmas 422
La creación, el escenario y Cancelación de alarmas 423
Configuración de un reloj despertador 424
Servicios que introducen 424
Uso de los servicios Bound 425
La creación de un servicio de inicio 427

Capítulo 12: la aplicación de la filosofía de diseño de Android


433

Presentación de la filosofía de diseño de Android 434


Diseñar para cada pantalla 434
resolución de la Independencia 435
Apoyar y Optimización para diferentes tamaños de pantalla 436
La creación de gráficos escalables Activos 439
Introducción del diseño de materiales 445
Pensar en términos de papel y tinta 446
El uso del color y líneas clave como guías 447
A través de la continuidad de movimiento 449

xxiii
CONTENIDO

Material de elementos de diseño de la interfaz de usuario 452


La barra de aplicaciones 452
La aplicación de diseño de materiales para el monitor del terremoto 455
Uso de tarjetas para mostrar el contenido 456
Botones de acción flotante 460

Capítulo 13: La implementación de una experiencia de usuario moderna Android


463

La interfaz de usuario moderna Android 464


La creación de interfaces de usuario, modernos coherente utilizando
AppCompat 464
Creación y aplicación de temas utilizando AppCompat 465
Creación de superposiciones temáticas específicas para Vistas 466
Adición de un menú y acciones a la App Bar 467
Definición de un recurso de menú 467
Agregar un menú a una actividad 468
Agregar un menú a un fragmento 469
Actualizar dinámicamente los elementos del menú 469
Manipulación de selección del menú 470
Añadiendo Vistas de acción y proveedores de acción 470
Más allá de la aplicación por defecto Bar 472
Para reemplazar su aplicación de barras con una barra de herramientas 472
Técnicas avanzadas de desplazamiento en la barra de herramientas 473
La incorporación de menús sin la App Bar 476
La mejora del Monitor terremoto App Bar 477
Patrones aplicación de navegación 479
La navegación con pestañas 479
La implementación de una barra de navegación inferior 482
El uso de un panel lateral de navegación 485
La combinación de patrones de navegación 491
La adición de aquí al monitor del terremoto 492
Elegir el nivel adecuado de Interrupción 496
Iniciar un diálogo 497
Vamos a hacer un brindis 498
Las interrupciones en línea con merenderos 499

Capítulo 14: personalización avanzada de la interfaz de usuario


501

La expansión de la experiencia del usuario 502


Accesibilidad apoyar 502

xxiv
CONTENIDO

Sin el apoyo a la navegación con una pantalla táctil 502


Proporcionar una descripción textual de cada vista 503
La introducción de texto a voz de Android 503
El uso de reconocimiento de voz 505
El uso de reconocimiento de voz para la entrada de voz 506
El uso de reconocimiento de voz para la búsqueda 507
El control de la vibración del dispositivo 508
Ir a pantalla completa 508
Trabajar con la propiedad Animaciones 510
La mejora de su Vistas 513
Lienzo de dibujo avanzada 514
Creación de controles interactivos 530
Recursos Drawable compuestas 536
transformadoras dibujables 536
dibujables capa 537
Dibujables lista del estado 537
Lista nivel dibujables 538
Copiar, Pegar y el portapapeles 539
Copia de datos en el portapapeles 539
Pegar datos del portapapeles 539

Capítulo 15: ubicación, la conciencia contextual, y la cartografía


541

Adición de Ubicación, Mapas, y conciencia contextuales a sus aplicaciones


542
La introducción de los servicios de Play 542
La adición de servicios de Google Play a su aplicación 543
La determinación de la disponibilidad de los servicios de Google Play 545
Encontrar Dispositivo ubicación mediante Google Location Services 546
Utilización del emulador para probar la funcionalidad basados ​en la localización 548
Encontrar la última ubicación conocida 549
“¿Dónde estoy” Ejemplo 551
Solicitud de ubicación Cambiar Actualizaciones 555
Dispositivo de cambio de ubicación Configuración 560
La actualización de la ubicación en el ejemplo “¿Dónde estoy” 563
Mejores prácticas en el uso Localización 566
Configuración y administración de Geocercas 567
Utilizando la plataforma Legado servicios basados ​en localización 571
La selección de un proveedor 572
Encontrar la última ubicación conocida 574

xxv
CONTENIDO

Solicitud de ubicación Cambiar Actualizaciones 575


Mejor Práctica para el uso de los servicios basados ​en localización Legado 577
Utilizando el Geocoder 580
La geocodificación inversa 581
La geocodificación hacia adelante 582
Geocodificación ¿Dónde estoy 583
La creación de las actividades del PAM-Basado 585
Cómo hacer llegar su clave API de Google Maps 586
Creación de un mapa de actividades basadas en 586
Configuración de Google Maps 589
Cambio de la posición de la cámara con la cámara Actualizaciones 590
Mapeo ¿Dónde estoy 592
Visualización de la ubicación actual con la ubicación de la capa Mi 596
Viendo mapa interactivo Marcadores 596
Cómo añadir figuras a Google Maps 599
Adición de superposiciones de imágenes en Google Maps 602
Adición de marcadores y formas para ¿Dónde estoy 602
Mapeo del Ejemplo terremoto 605
Adición de conciencia contextuales 609
Conexión a la API del cliente de servicios de Google Play y obtención de
claves de la API 610
El uso de las instantáneas de la conciencia de 612
Configuración y Monitoreo de la conciencia de Cercos 613
Las mejores prácticas de sensibilización 617

Capítulo 16: sensores de hardware 619

La introducción de sensores Android 620


Uso del Administrador de sensores 620
La comprensión de los sensores Android 621
Descubrir e identificar Sensores 623
La determinación de las capacidades de sensores 625
Despertar y sensores sin Despertar 627
Los resultados del monitoreo de sensores 627
Interpretación de valores de los sensores 632
Sensores de pruebas con el dispositivo virtual Android y emulador 635
Las mejores prácticas para trabajar con sensores 637
Seguimiento de los movimientos y orientación de un dispositivo 637
La determinación de la orientación natural de un dispositivo 638
La introducción de acelerómetros 639
La detección de cambios en la aceleración 640
La creación de un medidor de fuerza gravitatoria 642
Determinación de la orientación de un dispositivo 645
La creación de una brújula y Horizonte Artificial 650
xxvi
CONTENIDO

El uso de los sensores ambientales 654


Uso del sensor del barómetro 654
La creación de una estación meteorológica 655
El uso de sensores corporales 659
Reconocimiento de actividad del usuario 662

Capítulo 17: audio, vídeo, y el uso de la cámara 665

Reproducción de audio y vídeo, y la utilización de la cámara 666


Reproducción de audio y vídeo 666
Al presentar el Reproductor de Medios 667
Utilización de Media Player para la reproducción de vídeo 669
Usando ExoPlayer para la reproducción de vídeo 672
Solicitar y Administración del sonido de enfoque 674
Pausa de la reproducción cuando la salida cambia 676
En respuesta a los controles de volumen 677
Trabajar con una sesión de medios 678
Utilizando el Marco Media Router y Aplicación moldeada 682
Antecedentes de reproducción de audio 686
Construyendo un servicio de reproducción de audio 686
El uso de un navegador de medios para conectar su actividad a un servicio
Explorador de medios 688
Ciclo de vida de un servicio Explorador de medios 690
Reproducción de audio como un servicio de primer plano 691
Creación de dispositivos de estilo de Notificaciones 693
Uso del grabador de medios de grabación de audio 695
Uso de la cámara para tomar fotografías 697
Usando Intentos para tomar fotografías 697
El control de la cámara directamente 699
La lectura y la escritura JPEG EXIF ​Detalles de la imagen 706
La grabación de vídeo 706
Usando Intentos de grabar vídeo 707
El uso de la grabadora multimedia para grabar vídeo 707
Adición de contenido multimedia a la tienda de Medios 710
Colocación del medio utilizando el escáner de Medios 710
Colocación del medio manualmente 711

Capítulo 18: Comunicación con Bluetooth, NFC, Wi-Fi y peer-to-peer


713

Redes y Peer-to-Peer Comunicación 713


La transferencia de datos mediante Bluetooth 714
Administrar el adaptador de dispositivo Bluetooth local 714
Siendo la detección de dispositivos Detectable y remoto 716

xxvii
CONTENIDO

Comunicaciones Bluetooth 720


Perfiles de Bluetooth 725
Bluetooth Low Energy 726
La transferencia de datos mediante Wi-Fi Peer-to-Peer 728
Inicialización del marco de Wi-Fi Peer-to-Peer 729
El descubrimiento de los pares 731
Conexión con sus compañeros 732
Transferencia de datos entre los Pares 733
El uso de Near Field Communication 735
La lectura de las etiquetas NFC 735
Uso del sistema de primer plano de Despacho 736
El uso de Android Beam 738
Creación de Android Beam Mensajes 739
La asignación de la carga útil de Android Beam 740
Android Beam recibir mensajes 742

Capítulo 19: invadir la pantalla de inicio 743

Personalización de la pantalla de inicio 743


La introducción de widgets de la pantalla principal 744
Definir el diseño de widgets 745
La definición de su tamaño de widgets y otros metadatos 746
Implementación de su Widget 748
La actualización de la interfaz de usuario Widget Usando el widget Gestor de aplicaciones y vistas
remoto 749
Refresca forzando su Widget de datos y la interfaz de usuario 753
Crear y utilizar una actividad de configuración Widget 756
Creación de un Widget del terremoto 757
La introducción de la linterna Vista Reproductores 763
La creación de la linterna Vista Widget Presentaciones 764
Actualización de Colección Artículos de la visión con una fábrica Vistas remoto 765
Actualización de Colección Artículos de la visión con un servicio remoto Vistas 767
Poblar la linterna Vista Reproductores uso de un servicio remoto Vistas 768
Cómo agregar interactividad a los artículos dentro de una colección de Controles de Vista 769
Actualización de su colección Vea los aparatos 770
La creación de un terremoto de la linterna Vista Widget 770
La creación de Live Wallpaper 777
Creación de una definición de recursos Live Wallpaper 778
La creación de un fondo de pantalla del motor Servicio 778
La creación de un servicio de fondo de pantalla 780

xxviii
CONTENIDO

Creación de Accesos directos a aplicaciones 781


Los accesos directos estáticas 783
Los accesos directos dinámicos 784
El seguimiento de la aplicación de acceso directo Uso 785

Capítulo 20: Avanzado el Desarrollo Android 787

avanzada Android 788


Androide paranoico 788
Kernel de Linux Seguridad 788
Reintroducción de Permisos 789
El almacenamiento de claves en el almacén de claves Android 792
Usando el sensor de huellas dactilares 792
Tratar con diferente hardware y software de disponibilidad 793
Especificación de hardware requeridos 794
Confirmando disponibilidad de hardware 795
Creación de aplicaciones compatibles con versiones anteriores 795
Optimización del rendimiento de la interfaz de usuario con el modo estricto 797
Telefonía y SMS 798
Telefonía 799
Enviar y recibir mensajes SMS 806

Capítulo 21: Liberar, distribución y control Aplicaciones


825

Preparación para el lanzamiento 826


Preparar el material de apoyo de lanzamiento 826
Preparación de su código para una versión de lanzamiento 827
Actualización de aplicaciones de metadatos en su aplicación Manifiesto 828
La revisión de las restricciones de instalación de aplicaciones 828
Control de versiones de aplicaciones 830
La firma de la producción crece de su Aplicación 830
Creación de una clave del almacén de claves y firma con Android Studio 832
La obtención de claves de la API en base a su clave privada de lanzamiento 833
Construcción y firma de una versión de producción 834
Distribución de la aplicación en la tienda de Google Play 835
Presentación de la tienda de Google Play 835
Introducción a la tienda de Google Play 836
Creación de una aplicación en la tienda de Google Play 837
Publicación de su aplicación 845
La supervisión de su aplicación en la producción 848

xxix
CONTENIDO

Una introducción a las aplicaciones con obtención de ingresos 853


Comercialización de aplicación, promoción y distribución Estrategias 854
Estrategias de inicio de aplicaciones 854
internacionalización 855
Usando Firebase para supervisar su aplicación 856
Añadiendo Firebase a su aplicación 856
El uso de base de fuego Analytics 857
Supervisión del rendimiento base de fuego 860

ÍNDICE 863

xxx
INTRODUCCIÓN

Para muchas personas, los teléfonos inteligentes se han convertido en una extensión de sí mismos. Ahora se ejecuta en más de 2 mil millones de dispositivos

mensual-activas, Android es el sistema operativo para teléfonos inteligentes más común en uso en todo el mundo, entre los usuarios de la instalación de un promedio de 50

aplicaciones cada uno, lo que resulta en más de 94 mil millones de aplicaciones descargadas desde la tienda de aplicación Play en 2017 solo .

Ubicua e indispensable, los teléfonos inteligentes son tan avanzada y personal que los estudios han demostrado las personas se ponen ansiosos si

se ha extraviado su dispositivo, la conectividad o pierde o se baja de la batería. En los 10 años desde su lanzamiento en 2008, Android se ha

expandido más allá de los teléfonos móviles para convertirse en una plataforma de desarrollo para una amplia gama de hardware, con 24.000

aparatos de más de 1.300 marcas, incluyendo todo, desde tabletas a los televisores, relojes, coches, e Internet de las Cosas dispositivos (IOT).

Durante el mismo periodo, se han producido 28 SDK de plataforma y comunicados.

Estas innovaciones, junto con el tamaño del ecosistema, ofrecen oportunidades inigualables para los desarrolladores crear aplicaciones nuevas e innovadoras

para una audiencia global de usuarios. Android ofrece una plataforma abierta para el desarrollo de aplicaciones móviles. Sin barreras artificiales, los

desarrolladores de Android son libres de escribir aplicaciones que aprovechan al máximo de una increíble variedad de dispositivos. El uso de Google Play para

su distribución, los desarrolladores pueden distribuir aplicaciones gratuitas o de pago para los dispositivos Android compatibles a nivel mundial.

Este libro es una guía práctica en la construcción de aplicaciones Android para todos los dispositivos Android. Está escrito basado en la versión 8.1 del
SDK de Android, el uso de Android Studio 3.1. Capítulo por capítulo, que le lleva a través de una serie de proyectos de ejemplo, cada introducción de
nuevas características y técnicas para obtener el máximo rendimiento de Android. Cubre toda la funcionalidad básica para empezar, así como la
información para desarrolladores de aplicaciones móviles con experiencia para aprovechar al máximo las características de Android, para mejorar los
productos existentes o crear otros nuevos innovadores.

El equipo de Android libera una nueva plataforma importante todos los años, una nueva versión de Android Studio cada pocos meses, y los
cambios incrementales a Jetpack, tales como la biblioteca de soporte y Android Arquitectura Componentes, muchas veces cada año. Con este
tipo de frecuencia de nuevas versiones, hay cambios regulares, adiciones y mejoras en las herramientas, API de la plataforma, y ​bibliotecas de
desarrollo que va a utilizar, y que se describen en este libro. Para minimizar el impacto de estos cambios, el equipo de ingeniería de Android
trabaja duro para asegurar compatibilidad con versiones anteriores.

Sin embargo, las futuras versiones de la fecha serán parte de la información proporcionada en este libro, y no todos los dispositivos Android activos
estarán ejecutando la última versión de la plataforma. Para mitigar esto, siempre que sea posible, hemos utilizado bibliotecas de soporte compatibles con
versiones anteriores, y se incluyen detalles sobre la cual libera la plataforma de soporte a la funcionalidad descrita y qué alternativas puede existir para
proporcionar soporte a los usuarios de los dispositivos con plataformas anteriores.

Además, las explicaciones y los ejemplos incluidos le dará la tierra y los conocimientos necesarios para escribir aplicaciones móviles
atractivas utilizando el SDK actual, junto con la flexibilidad necesaria para adaptarse rápidamente a futuras mejoras.
INTRODUCCIÓN

PARA QUIEN ES ESTE LIBRO

Este libro es para cualquier persona interesada en la creación de aplicaciones para la plataforma Android. Incluye información que será de gran valor, si
usted es un desarrollador móvil con experiencia en otras plataformas, haciendo su primera incursión en la escritura de aplicaciones para dispositivos
móviles, y si usted tiene alguna experiencia en el desarrollo de Android.

Esto ayudará si usted ha utilizado un teléfono inteligente (en particular un dispositivo Android), pero no es necesario, ni es la experiencia previa en el
desarrollo de aplicaciones móviles.

Se espera que usted tiene experiencia en el desarrollo de software y estar familiarizado con los paradigmas a objetos básicos. Se
espera que una comprensión de la sintaxis de Java, aunque no una necesidad estricta. Los capítulos 1 y 2 presentan el desarrollo
móvil y la plataforma de desarrollo de Android, y contienen instrucciones para ayudarle a empezar. Más allá de eso, no hay ningún
requisito para leer los capítulos en orden, a pesar de una buena comprensión de los componentes básicos descritos en los capítulos
3-7 es importante antes de aventurarse en los capítulos restantes. Capítulo 11 cubre los detalles importantes sobre la manera de
asegurarse de que sus aplicaciones son sensibles y eficientes, mientras que los capítulos 12-14 describen cómo proporcionar una
experiencia de usuario rica y consistente. Los capítulos restantes cubren una variedad de funciones cuya relevancia variará en
función de su aplicación,

Lo que este libro CUBIERTAS

Capítulo 1 introduce Android, incluyendo lo que es y cómo encaja en el ecosistema de desarrollo móvil. Lo que Android ofrece como
plataforma de desarrollo y por qué es una gran oportunidad para la creación de aplicaciones de telefonía móvil se examinó a
continuación con mayor detalle.

El capítulo 2 incluye algunas de las mejores prácticas para el desarrollo móvil y explica cómo descargar e instalar Android Studio y el
SDK de Android. A continuación, expondremos algunas de las herramientas y las funciones incluidas con Android de estudio, y
demuestra cómo se pueden utilizar para crear y depurar aplicaciones nuevas.

Capítulos 3-7 toman una mirada en profundidad a los componentes de arranque de aplicaciones Android fundamentales mediante el
examen de los componentes que conforman una aplicación para Android, y luego de pasar a “Actividades” y “Fragmentos”, y sus tiempos
de vida y ciclos de vida asociados.

A continuación, presentaremos el manifiesto de aplicación y el Gradle sistema de construcción, antes de aprender más sobre el marco de recursos
externo que se utiliza para soportar los dispositivos utilizados en los diferentes condados, con diferentes idiomas, y en una variedad de formas y
tamaños.

Vas a aprender cómo crear interfaces de usuario básicos con diseños, vistas y fragmentos, antes de ser introducido a la intención y mecanismos
receptor de difusión utilizado para llevar a cabo acciones y enviar mensajes entre los componentes de la aplicación. El acceso a los recursos de
Internet se cubre entonces, seguido de un examen detallado de almacenamiento de datos, recuperación y uso compartido. Vamos a empezar con
la preferencia de ahorro

xxxii
INTRODUCCIÓN

mecanismo y luego pasar a gestión de ficheros, bases de datos y los proveedores de contenido, incluyendo el acceso a los datos de las bases de
datos nativas.

Esta sección termina con un examen de la forma de garantizar su aplicación es siempre sensible, y es eficiente en su uso de la batería cuando
se ejecuta en segundo plano. Se le presentó a enhebrar APIs que permiten la ejecución asíncrona, y los mecanismos que apoyan la
programación eficiente del trabajo de fondo. También aprenderá cómo crear y mostrar notificaciones interactivas. Capítulos 12-14 basará en el
marco de interfaz de usuario introducidos en el capítulo 5. Vas a aprender a mejorar la experiencia del usuario a través de los principios de
diseño de materiales y para hacer que sus aplicaciones sean accesibles y optimizado para una variedad de tamaños y resoluciones de pantalla.
Usted mejorará aún más la experiencia del usuario mediante la comprensión de la variedad de opciones de navegación disponibles, añadiendo
movimiento a través de animaciones, y el uso de barras de herramientas y menús.

Capítulos 15-19 vistazo a temas más avanzados. Vas a aprender cómo utilizar los servicios de Google Play para añadir mapas
interactivos, encontrar la ubicación del usuario, y cómo crear geo-cercas y sensibilización. Utilizando el movimiento y sensores
ambientales, incluyendo la brújula, acelerómetros, y el barometer- que va a hacer que sus aplicaciones reaccionan a su entorno.

Después de buscar la manera de jugar y multimedias, así como el uso de la cámara para tomar fotos y grabar video, se le presentó a
los medios de comunicaciones para Android, incluyendo Bluetooth, NFC, y Wi-Fi Direct. A continuación, usted aprenderá cómo las
aplicaciones pueden interactuar con los usuarios directamente desde la pantalla principal con widgets dinámicos, Live Wallpaper, y los
accesos directos a aplicaciones.

Capítulo 20 discute varios temas avanzados de desarrollo, incluida la seguridad, mediante el sensor de huellas digitales y el modo
estricto, seguido de las API de telefonía y las API utilizadas para enviar y recibir mensajes SMS.

Por último, el capítulo 21 se examina el proceso de construcción, la liberación, el seguimiento y monetizar sus aplicaciones. En
particular, incluye detalles para publicar y distribuir sus aplicaciones en Google Play.

¿Cómo está estructurado este libro


Este libro está estructurado en una secuencia lógica para ayudar a los lectores de diferentes orígenes de desarrollo a aprender cómo
escribir aplicaciones Android avanzadas. No hay ningún requisito para leer cada capítulo de forma secuencial, pero varios de los
proyectos de la muestra se desarrollan a lo largo de varios capítulos, añadiendo nuevas funcionalidades y otras mejoras en cada etapa.

los desarrolladores móviles experimentados que ya han instalado Android de estudio, y los que tienen un conocimiento práctico de desarrollo
de Android, pueden rozar los dos primeros capítulos -que son una introducción al desarrollo de aplicaciones móviles y las instrucciones para
la creación de su entorno de desarrollo, y luego sumergirse en al Capítulos 3- 7. Estos capítulos cubren los fundamentos del desarrollo de
Android, por lo que es importante tener una comprensión sólida de los conceptos que describen.

XXXIII
INTRODUCCIÓN

Con esta cubierto, puede pasar a los capítulos restantes, que se ven en el diseño de materiales, mapas, servicios basados ​en
localización, aplicaciones en segundo plano, y temas más avanzados, tales como la interacción de hardware y redes.

LO QUE DEBE utilizar este libro


Para utilizar los ejemplos de código en este libro, usted tendrá que crear un entorno de desarrollo Android mediante la descarga de Android

Studio y el SDK de Android. También es posible utilizar otros entornos de desarrollo, o incluso para construir sus aplicaciones desde la línea

de comandos. Vamos a suponer, sin embargo, estás usando Android Studio. el desarrollo de Android es compatible con Windows, MacOS y

Linux, con Android Studio y el SDK disponible en el sitio web de Android.

No es necesario un dispositivo Android para utilizar este libro o el desarrollo de aplicaciones para Android, aunque puede ser útil, sobre todo
cuando se prueba.

NOTA Capítulo 2 se describen estos requisitos con más detalle y describe dónde descargar y cómo
instalar cada componente.

CONVENCIONES

Para ayudarle a obtener el máximo rendimiento del texto y realizar un seguimiento de lo que está pasando, hemos utilizado una serie de convenciones en
todo el libro.

NOTA Notas, sugerencias, consejos, trucos y apartes a la discusión actual se compensan y se colocan en cursiva
como este.

ADVERTENCIA Cajas como ésta tienen información importante, no-a-ser olvidado que es directamente
relevante para el texto que lo rodea.

En cuanto a los estilos en el texto:

➤ Mostramos los nombres de archivos, direcciones URL, y el código dentro del texto de esta manera: persistence.properties.

➤ Para ayudar a la legibilidad, los nombres de clase en el texto se representan a menudo usando una fuente regular pero en capital

zado de este modo: Proveedor de Contenido.

XXXIV
INTRODUCCIÓN

➤ Presentamos código de dos maneras diferentes:

Utilizamos un tipo monofont sin resaltado para la mayoría de los ejemplos de código.

Utilizamos negrita para indicar cambios o adiciones a partir de un fragmento de código anterior similar.

➤ En algunos ejemplos de código, verá líneas marcadas de la siguiente manera:

[... Código existente ...]


o
[... Implementar algo aquí ...]

Estos representan instrucciones para sustituir la línea entera (incluyendo los corchetes) con el código real, ya sea
desde un fragmento de código anterior (en el primer caso) o con su propia aplicación (en el segundo).

➤ Para mantener los ejemplos de código razonablemente concisa, no siempre hemos incluido todas las paquete-

años definición o importar declaración requerida en los fragmentos de código. Los ejemplos de código descargables se describen a

continuación incluyen toda la requieren importar declaraciones. Además, si está desarrollando el uso de Android Studio, puede activar la
importación automática o utilizar la combinación de teclas Ctrl + Espacio (Cmd + Espacio) para añadir el requerido importar declaraciones.

CÓDIGO FUENTE

A medida que trabaja a través de los ejemplos de este libro, es posible elegir entre escribir todo el código manualmente, o usar los archivos de código
fuente que acompañan el libro. Todo el código fuente usado en este libro está disponible para su descarga en www.wrox.com. Cuando en el sitio, sólo
tiene que localizar el título del libro (utilice el cuadro de búsqueda o una de las listas de títulos) y haga clic en el enlace de código de descarga en la
página de detalles del libro para obtener todo el código fuente para el libro.

Una vez descargado el código, basta con descomprimirlo con su herramienta de compresión favorito. Alternativamente, usted puede ir a la
página principal Wrox código de descarga en www.wrox.com/dynamic/books/download
. aspx para ver el código disponible para este libro y todos los otros libros Wrox.

ERRATA

Hacemos todo lo posible para asegurarse de que no hay errores en el texto o en el código. Sin embargo, nadie es perfecto, y no se producen
errores. Si se encuentra un error en uno de nuestros libros, como un error de ortografía o pieza defectuosa de código, estaríamos muy
agradecidos por su colaboración. Mediante el envío de erratas, puede salvar a otro lector horas de frustración, y al mismo tiempo, usted
estará ayudando a proporcionar la información de calidad aún mayor.

Para encontrar la página de erratas de este libro, ir a www.wrox.com y localizar el título utilizando el cuadro de búsqueda o una de las listas de títulos. A
continuación, en la página de detalles del libro, haga clic en el enlace de libro de erratas. En esta página, puede ver todas las erratas que se ha presentado
para este libro y publicado por los editores Wrox. Una completa

XXXV
INTRODUCCIÓN

lista de libros, incluyendo enlaces a las erratas de cada libro, también está disponible en booklist.shtml www.wrox.com/misc-pages/.

Si no manchar “su” error en la página del libro de erratas, vaya a www.wrox.com/contact/techsupport


. shtml y completar el formulario que hay que enviar el error que haya encontrado. Vamos a comprobar la información y, en su caso, enviar
un mensaje a página de erratas del libro y solucionar el problema en las ediciones posteriores del libro.

xxxvi
PROFESIONAL

Androide ®

Cuarta edición
1
Hola, Android
Contenido de este capítulo?

➤ Un fondo de desarrollo de aplicaciones móviles

➤ ¿Qué es Android?

➤ ¿Qué dispositivos Android se ejecuta en

➤ ¿Por qué usted debe desarrollar para móviles y Android

➤ Una introducción al SDK de Android y marco de desarrollo

DESARROLLO DE APLICACIONES ANDROID

Tanto si eres un ingeniero con experiencia móvil, un desarrollador de escritorio o web, o un novato de programación completo, Android
representa una gran oportunidad para escribir aplicaciones para un público de más de dos mil millones de usuarios de dispositivos
Android.

Es probable que ya familiarizado con Android, el software más común de encender los teléfonos móviles. Si no es así, y que ha
adquirido este libro con la esperanza de que el desarrollo de Android podría ayudarle a crear un ejército imparable de guerreros
robot sin emociones en una búsqueda incesante para limpiar la tierra del flagelo de la humanidad, se debe reconsiderar esta
compra de libros (y sus opciones de vida .)

Al dar a conocer Android en su lanzamiento en 2007, Andy Rubin describió como sigue:

La primera plataforma verdaderamente abierta y completa para dispositivos móviles. Incluye un sistema
operativo, interfaz de usuario y aplicaciones de todos los de la

Android ® profesional, Cuarta edición. Reto Meier y Ian Lago. © 2018 John Wiley & Sons, Inc.
Publicado 2018 por John Wiley & Sons, Inc.
2 | CAPÍTULO 1 Hola, Android

software para ejecutar un teléfono móvil, pero sin los obstáculos propios que han obstaculizado la
innovación móvil.

- ¿Dónde está mi Gphone?


(Http://googleblog.blogspot.com/2007/11/wheres-my-gphone.html)

Desde entonces, Android se ha expandido más allá de los teléfonos móviles para proporcionar una plataforma de desarrollo para una cada vez más
amplia gama de hardware, incluyendo tabletas, televisores, relojes, automóviles y internet-ofThings dispositivos (IOT).

Android es una pila de software de código abierto que incluye un sistema operativo, middleware y aplicaciones clave para los
dispositivos móviles e integrados.

Críticamente, para nosotros como desarrolladores, también incluye un amplio conjunto de bibliotecas de API que permiten escribir aplicaciones que pueden

dar forma a la apariencia, sensación y función de los dispositivos Android en el que se ejecutan.

En Android, el sistema, agrupados, y todas las aplicaciones de terceros se escriben con las mismas API y se ejecutan en el mismo tiempo de
ejecución. Estas API cuentan con acceso al hardware, grabación de vídeo, servicios basados ​en localización, soporte para servicios en segundo
plano, mapas, notificaciones, sensores, bases de datos relacionales, la comunicación entre aplicaciones, Bluetooth, NFC, y gráficos 2D y 3D.

Este libro describe cómo utilizar estas API para crear sus propias aplicaciones de Android. En este capítulo se aprende algunas pautas para el
desarrollo de hardware móviles e integrados, y son introducidos a algunas de las características de la plataforma disponibles para los
desarrolladores de Android.

Android tiene las API de gran alcance, un ecosistema enorme y diverso de usuarios, excelente documentación, una próspera comunidad de
desarrolladores, y no tiene costes necesarios para el desarrollo o la distribución. A medida que el ecosistema de dispositivos Android sigue creciendo,
usted tiene la oportunidad de crear aplicaciones innovadoras para los usuarios, independientemente de su experiencia de desarrollo.

Un fondo Poco
En los días previos a Instagram, Snapchat, y Pokémon Go, cuando Google era todavía un brillo en los ojos y los dinosaurios de sus
fundadores vagaban por la tierra, los teléfonos móviles eran los teléfonos sólo eso-portátiles lo suficientemente pequeños como para caber
dentro de un maletín, con baterías que podrían durar hasta varias horas. Ellos, sin embargo, ofrecen la libertad de realizar llamadas sin estar
físicamente conectado a un teléfono fijo. En los 10 años desde que se lanzó el primer dispositivo Android, los teléfonos inteligentes se han
vuelto omnipresentes e indispensables. avances de hardware han hecho los dispositivos más potentes, con más grandes, pantallas más
brillantes y con hardware avanzado incluyendo acelerómetros, escáneres de huellas digitales y cámaras de ultra-alta resolución.

Estos mismos avances han resultado más recientemente en una proliferación de factores de forma adicionales para los dispositivos Android,

incluyendo una gran variedad de teléfonos inteligentes, tabletas, relojes y televisor. Estas innovaciones de hardware ofrecen un terreno fértil para el

desarrollo de software, que proporciona muchas oportunidades para crear nuevas aplicaciones innovadoras.
El ecosistema Android | 3

El pasado no muy lejano


En los primeros días del desarrollo del teléfono nativo de aplicaciones, desarrolladores, por lo general de codificación de bajo nivel en C o C ++,
necesaria para entender el hardware específico que se codifican para, por lo general un único dispositivo o, posiblemente, una gama de dispositivos
de un solo fabricante. La complejidad inherente a este enfoque significaba que las aplicaciones escritas para estos dispositivos a menudo estaban por
debajo de sus homólogos de hardware. A medida que la tecnología de hardware y acceso a Internet móvil han avanzado, este enfoque ha cerrado
inadaptados.

El siguiente avance significativo en el desarrollo de aplicaciones de telefonía móvil fue la introducción de MIDlets alojados en Java. MIDlets fueron
ejecutados en una máquina virtual Java (JVM), un proceso que abstrae el hardware subyacente y permitir a los desarrolladores crear aplicaciones
que se ejecutaban en muchos dispositivos que apoyaron el tiempo de ejecución de Java.

Por desgracia, esta comodidad llegó al precio de un acceso más restringido en gran medida al hardware del dispositivo. Del mismo modo, se
considera normal para las aplicaciones de terceros para recibir diferentes para acceder al hardware y ejecución de los derechos de las atribuidas a
las aplicaciones nativas escritas por los fabricantes de teléfonos, con frecuencia MIDlets recibir algunas de cualquiera.

La introducción de Java MIDlets expandió audiencias de los desarrolladores, pero la falta de acceso al hardware de bajo nivel y la ejecución de un
recinto de seguridad significa que la mayoría de las aplicaciones móviles eran los programas de escritorio regulares o sitios web diseñados para rendir
en una pantalla más pequeña, y no se aprovechan de la inherente la movilidad de la plataforma portátil.

La vida en el futuro
En su introducción, Android era parte de una nueva ola de los sistemas operativos móviles modernos diseñados específicamente para apoyar el

desarrollo de aplicaciones móviles en el hardware cada vez más potente. Android ofrece una plataforma de desarrollo abierta construida sobre una fuente

abierta de Linux kernel. el acceso al hardware está disponible para todas las aplicaciones a través de una serie de bibliotecas API, y la interacción de

aplicaciones, mientras que cuidadosamente controlado, es totalmente compatible.

En Android, todas las aplicaciones tienen igual jerarquía. De terceros y aplicaciones nativas de Android se escriben con las mismas API y se ejecutan en el

mismo tiempo de ejecución. Los usuarios pueden reemplazar la mayoría de aplicaciones del sistema con la alternativa de un desarrollador de terceros; De

hecho, incluso las pantallas de marcador y el hogar pueden ser reemplazados.

El ecosistema Android
El ecosistema Android se compone de una combinación de tres componentes:

➤ Un sistema operativo gratuito de código abierto para dispositivos embebidos

➤ Una plataforma de desarrollo de código abierto para la creación de aplicaciones

➤ Los dispositivos que ejecutan el sistema operativo Android (y las aplicaciones creadas por ella)
4 | CAPÍTULO 1 Hola, Android

Más específicamente, Android se compone de varias piezas necesarias y dependientes, incluyendo los siguientes:

➤ Un documento de compatibilidad Definición (CDD) y la prueba de compatibilidad Suite (CTS) que

describir las capacidades requeridas para un dispositivo para soportar la pila de software Android.

➤ Un núcleo del sistema operativo Linux que proporciona una interfaz de bajo nivel con el hardware,

gestión de memoria, y el control del proceso, todos optimizados para dispositivos móviles y embebidos.

➤ bibliotecas de código abierto para el desarrollo de aplicaciones, incluyendo SQLite, WebKit, OpenGL, y

un gestor de medios de comunicación.

➤ Un tiempo de ejecución utilizado para ejecutar y alojar aplicaciones de Android, incluyendo el tiempo de ejecución de Android

(ART) y las bibliotecas del núcleo que proporcionan funcionalidad Android-específico. El tiempo de ejecución está diseñado para ser

pequeño y eficiente para su uso en dispositivos embebidos.

➤ Un marco de aplicación que agnóstico expone servicios de sistema a la capa de aplicación,

incluyendo el gestor de ventanas y Administrador de ubicaciones, bases de datos, telefonía y sensores.

➤ Un marco de interfaz de usuario utilizado para alojar y ejecutar aplicaciones.

➤ Un conjunto de núcleo preinstalado aplicaciones.

➤ Un kit de desarrollo de software (SDK) que se utiliza para crear aplicaciones, incluyendo las herramientas relacionadas,

IDE, código de ejemplo y documentación.

Lo que realmente hace Android convincente es su filosofía abierta, lo que asegura que se puede corregir cualquier deficiencia en el diseño
de interfaz de usuario o aplicación nativa escribiendo una extensión o reemplazo. Android le proporciona, como desarrollador, con la
oportunidad de crear aplicaciones diseñadas para verse, sentirse y funcionar exactamente como usted se imagina.

Con más de 2 mil millones de usuarios activos mensuales de los dispositivos que ejecutan el sistema operativo Android, la instalación de más de 82
mil millones de aplicaciones y juegos en Google Play en 2016 solo, el ecosistema Android representa una oportunidad sin precedentes para crear
aplicaciones que pueden afectar y mejorar miles de vida de las personas .

ANDROIDE APLICACIONES preinstalado


dispositivos Android vienen típicamente con un conjunto de aplicaciones preinstaladas que los usuarios esperan. En los teléfonos inteligentes son típicamente

incluyen:

➤ Un marcador de teléfono

➤ Una aplicación de gestión de SMS

➤ Un navegador web

➤ Un cliente de correo electrónico

➤ Un calendario

➤ Una lista de contactos


Características del SDK de Android | 5

➤ Un reproductor de música y galería de fotos

➤ Una aplicación de la cámara y grabación de vídeo

➤ Una calculadora

➤ Una pantalla de inicio

➤ Un reloj despertador

En muchos casos los dispositivos Android también se envían con las siguientes aplicaciones móviles propiedad de Google:

➤ El Google Play Store para descargar aplicaciones Android de terceros

➤ La aplicación Google Maps, incluyendo StreetView, direcciones de conducción, y paso a paso

navegación por satélite, vistas, y las condiciones del tráfico

➤ El cliente de correo electrónico Gmail

➤ El reproductor de vídeo de YouTube

➤ El navegador Google Chrome

➤ La pantalla principal de Google y Google Asistente

Los datos almacenados y utilizados por muchas de estas aplicaciones nativas-como-contacto también detalles están disponibles para las
aplicaciones de terceros.

La distribución exacta de las aplicaciones disponibles en los nuevos dispositivos Android es probable que varían en función del fabricante del hardware, el

transportista o distribuidor, y el tipo de dispositivo. La naturaleza de código abierto de Android significa que los transportistas y fabricantes de equipos

originales pueden personalizar la interfaz de usuario y las aplicaciones incluidas con cada dispositivo Android.

Es importante señalar que para los dispositivos compatibles, la plataforma subyacente y el SDK se mantiene intacta a través de las variaciones
del OEM y del portador. La apariencia de la interfaz de usuario pueden variar, pero sus aplicaciones funcionarán de la misma manera en todos
los dispositivos Android compatibles.

CARACTERÍSTICAS SDK de Android

Para nosotros, los desarrolladores, el verdadero atractivo de Android reside en sus APIs.

Como una plataforma de aplicación neutra, Android le da la oportunidad de crear aplicaciones que son una parte tan importante del
teléfono como cualquier cosa siempre fuera de la caja. La siguiente lista destaca algunas de las características más destacables de
Android:

➤ Acceso transparente a los recursos de Internet y la telefonía a través de GSM, EDGE, 3G, 4G, LTE,

y el apoyo a la red Wi-Fi, lo que permite su aplicación para enviar y recuperar datos a través de redes móviles y Wi-Fi

➤ API integrales para los servicios basados ​en localización como el GPS y la ubicación basada en la red

detección

➤ Soporte completo para la integración de mapas dentro de la interfaz de usuario


6 | CAPÍTULO 1 Hola, Android

➤ Control absoluto de hardware multimedia, incluyendo la reproducción y la grabación con la cámara y

micrófono

➤ bibliotecas de medios para reproducir y grabar una variedad de audio / vídeo o Formatos de imágenes fijas

➤ API para el uso de hardware del sensor, incluyendo acelerómetros, brújulas, barómetros, y dedo

sensores de impresión

➤ Bibliotecas para el uso de Wi-Fi, Bluetooth, NFC y hardware

➤ Compartida almacenes de datos y API de contactos, calendario y multimedia

➤ servicios en segundo plano y un sistema de notificación avanzada

➤ Un navegador web integrado

➤ , gráficos acelerados por hardware optimizados para móviles, incluyendo una biblioteca de gráficos 2D basado en una ruta

y soporte para gráficos 3D usando OpenGL ES 2.0

➤ La localización a través de un marco de recursos dinámicos

¿QUÉ ANDROID EN MARCHA?


El primer teléfono móvil Android, el T-Mobile G1, fue lanzado en los Estados Unidos en octubre
2008. A finales de 2017 hay más de 2 mil millones de dispositivos Android activos mensuales a nivel mundial, por lo que es el sistema operativo del

teléfono inteligente más común en uso en todo el mundo. En lugar de ser un sistema operativo móvil creado para una sola implementación de

hardware, Android está diseñado para soportar una gran variedad de plataformas de hardware, desde teléfonos inteligentes para tabletas, televisores,

relojes, y los dispositivos IO.

Sin pago de licencias o software propietario, el costo para los fabricantes de teléfonos para proporcionar los dispositivos Android es
relativamente baja, lo que, combinado con un ecosistema de aplicaciones de gran alcance masivo, ha animado a los fabricantes de
dispositivos de hardware para producir cada vez más diverso y adaptado.

Como resultado, cientos de fabricantes, como Samsung, LG, HTC y Motorola, están creando dispositivos Android. Estos dispositivos se
distribuyen a los usuarios a través de cientos de compañías en todo el mundo.

¿Por qué desarrollar para móviles?

Los teléfonos inteligentes se han vuelto tan avanzada y personal para nosotros que para muchas personas se han convertido en una extensión de sí mismos.

Los estudios han demostrado que muchos usuarios de teléfonos móviles se vuelven ansiosos si se ha extraviado su dispositivo, pierden la conectividad, o su

batería se agote.

La ubicuidad de los teléfonos móviles, y nuestro apego a ellos, una plataforma fundamentalmente diferente para el desarrollo de los ordenadores

hace. Con un micrófono, cámara, pantalla táctil, detección de la ubicación, y los sensores ambientales, un teléfono puede convertirse

efectivamente en un dispositivo de percepción extra-sensorial. la propiedad de teléfonos inteligentes supera fácilmente la propiedad de

computadoras en muchos países, con más de 3 mil millones de usuarios de teléfonos móviles en todo el mundo. 2009 fue el año en que más

gente accede a Internet por primera vez desde un teléfono móvil en lugar de un PC.
Al presentar el Marco de Desarrollo | 7

La creciente popularidad de los teléfonos inteligentes, combinada con la creciente disponibilidad de datos móviles de alta velocidad y puntos de acceso

Wi-Fi, ha creado una enorme oportunidad para que las aplicaciones móviles avanzados. aplicaciones para teléfonos inteligentes han cambiado la forma

de utilizar sus teléfonos. Esto le da, el desarrollador de aplicaciones, una oportunidad única para crear nuevas aplicaciones dinámicas y convincentes

que se convierten en una parte vital de la vida de las personas.

¿Por qué desarrollar para Android?

Además de proporcionar acceso a la mayor ecosistema de usuarios de teléfonos inteligentes, Android representa un marco dinámico para el desarrollo de

aplicaciones basadas en la realidad de los dispositivos móviles modernos diseñados por los desarrolladores, para los desarrolladores.

Con un SDK sencillo, potente y abierta, no hay derechos de licencia, excelente documentación, una amplia gama de dispositivos y factores de

forma, y ​una próspera comunidad de desarrolladores, Android representa una oportunidad para crear un software que puede cambiar la vida de

las personas. La barrera de entrada para nuevos desarrolladores de Android es mínimo:

➤ No se requiere certificación para convertirse en un desarrollador de Android.

➤ La tienda de Google Play ofrece libre, por adelantado de compra, facturación integrada en la aplicación, y la suscripción

opciones para la distribución y monetización de sus aplicaciones.

➤ No hay proceso de aprobación para la distribución de aplicaciones.

➤ Los desarrolladores tienen un control total sobre sus marcas.

Desde un punto de vista comercial, Android representa el sistema operativo del teléfono inteligente más común, y proporciona acceso a más de 2 mil
millones de dispositivos Android activos mensuales a nivel mundial, ofreciendo alcance sin precedentes para hacer que sus aplicaciones disponibles para
los usuarios de todo el mundo.

La introducción del marco DESARROLLO


aplicaciones Android normalmente se escriben utilizando los lenguajes de programación Java o Kotlin, y se ejecutan por medio del tiempo
de ejecución de Android (ART).

NOTA Históricamente, las aplicaciones de Android fueron escritos principalmente utilizando la sintaxis del lenguaje Java.
Más recientemente, Android Studio 3.0 introdujo soporte completo para Kotlin como lengua oficial de primera clase para el
desarrollo de aplicaciones. Kotlin es un lenguaje de JVM, con características de compatibilidad con lenguajes de Android y
el tiempo de ejecución de Android existente, lo que permite utilizar tanto la sintaxis de Java y Kotlin dentro de las mismas
aplicaciones.

Cada aplicación Android corre en un proceso separado, renunciando a toda responsabilidad por la memoria y la gestión de procesos para el Android
tiempo de ejecución, que se detiene y mata a los procesos que sean necesarios para gestionar los recursos.
8 | CAPÍTULO 1 Hola, Android

ART se sienta encima de un núcleo de Linux que se encarga de la interacción hardware de bajo nivel, incluyendo los conductores y la gestión de memoria,

mientras que un conjunto de API proporciona acceso a todos los servicios, características, y el hardware subyacente.

Qué contiene la caja


El SDK de Android incluye todo lo necesario para empezar a desarrollar, probar y depurar aplicaciones Android:

➤ Las Bibliotecas de la API de Android -El núcleo del SDK es las bibliotecas de API de Android que proporcionan acceso a la pila desarrollador

de Android. Estas son las mismas bibliotecas que Google utiliza para crear aplicaciones nativas de Android.

➤ Herramientas de desarrollo -La SDK incluye el estudio IDE y varias otras herramientas de desarrollo que permiten compilar y

depurar sus aplicaciones a su vez el código fuente de Android en Android aplicaciones ejecutables. A aprender más sobre las
herramientas de desarrollo en el capítulo 2, “Getting Started”.

➤ El Administrador de dispositivos Android y emulador virtual -La Android Emulator es un emulador completamente interactivo dispositivo

móvil que ofrece varios skins alternativos. El emulador se ejecuta dentro de un dispositivo virtual Android (AVD) que simula una
configuración de hardware del dispositivo. Usando el emulador se puede ver cómo sus aplicaciones se parecen y se comportan en un
dispositivo Android real. Todas las aplicaciones Android se ejecutan dentro del arte, por lo que el emulador de software es un entorno
de desarrollo en el hecho relevante, porque es el hardware neutral, que proporciona un entorno de prueba independiente mejor que
cualquier implementación de hardware única.

➤ La documentación completa -La SDK incluye una amplia información de referencia a nivel de código que detalla exactamente lo que está

incluido en cada paquete y clase y la forma de utilizarlos. Además de la documentación de código, documentación de referencia y
guías para desarrolladores de Android explican cómo empezar, dar una explicación detallada de los fundamentos detrás de
desarrollo de Android, resaltar las mejores prácticas, y proporcionar profundas inmersiones en temas del marco.

➤ Código de muestra -La Android SDK incluye una selección de aplicaciones de ejemplo que muestran algunas de las posibilidades disponibles

con Android, así como programas sencillos que ponen de relieve cómo utilizar las funciones de API individuales.

➤ Soporte en línea -Android tiene comunidades de desarrolladores vibrantes en la mayoría de las redes sociales en línea, Slack, y muchos

foros de desarrolladores. Desbordamiento de pila ( preguntas www.stackoverflow.com/ / etiquetado / androide) es un destino muy popular
para Android preguntas y un gran lugar para encontrar respuestas a las preguntas de principiante. Muchos ingenieros de Android de
Google están activos en desbordamiento de pila y Twitter.

La comprensión de la pila de software Android


La pila de software Android es un núcleo de Linux y una colección de bibliotecas de C / C ++ expuestas a través de un marco de aplicación que
proporciona los servicios de, y la gestión de, el tiempo de funcionamiento y las aplicaciones, como se muestra en la Figura 1-1.
Al presentar el Marco de Desarrollo | 9

Capa de aplicación

sus Aplicaciones Otra tercera Parte aplicaciones Aplicaciones del sistema / liados

Soporte / Compatibilidad / Bibliotecas de propiedad

Biblioteca de compatibilidad Android Play Services firebase

Marco de aplicación

Gestor de fragmento Administrador de Noti fi cación


Puntos de vista
actividad Director recursos Director

Proveedores de Director de la gestor de Gerente de Gerente de


contenido telefonía ventanas empaquetación locación

Nativo (C / C ++) Bibliotecas Android Runtime

Gráficos Android Runtime


Medios de comunicación IIBC
(OpenGL, ...) (ART º)

Android Core
SQLite SSL y Webkit ...
bibliotecas

Abstracción de hardware (HAL)

Audio Automotive Bluetooth almacenamiento DRM

Medios de comunicación periféricos sensores la cámara de TV

Linux Kernel

Controladores de Gestión de Gestión de la


Aglutinante (IPC) Seguridad
hardware proceso memoria

Administración de energía

FIGURA 1-1
10 | CAPÍTULO 1 Hola, Android

➤ kernel de Linux -CORE servicios (incluyendo los controladores de hardware, procesos y gestión de memoria, la seguridad, la red y la

administración de energía) son manejados por un núcleo de Linux (versión específica del núcleo depende de la versión de la plataforma

Android y la plataforma de hardware).

➤ Capa de aplicación de hardware (HAL) -La HAL proporciona una capa de abstracción entre el hardware del dispositivo

físico subyacente y el resto de la pila.

➤ bibliotecas -Running en la parte superior del núcleo y HAL, Android incluye varias bibliotecas C / C ++ de núcleo tales como libc

y SSL, así como la siguiente:

➤ Una biblioteca de medios para la reproducción de archivos de audio y vídeo

➤ Un gestor de superficie para proporcionar administración de pantallas

➤ librerías gráficas que incluyen SGL y OpenGL para gráficos 2D y 3D

➤ SQLite para el soporte de base de datos nativa

➤ SSL y WebKit para el navegador web integrado y la seguridad en Internet

➤ Android Tiempo de Ejecución -El tiempo de ejecución es lo que hace que un teléfono Android un teléfono Android en lugar de una

implementación de Linux móvil. Incluyendo las bibliotecas del núcleo, el tiempo de ejecución de Android es el motor que acciona sus
aplicaciones y constituye la base para el marco de aplicación.

➤ bibliotecas del núcleo -Aunque la mayoría del desarrollo de aplicaciones para Android está escrito utilizando los lenguajes Java o JVM Kotlin, TAR no es una

máquina virtual de Java. Las bibliotecas Android básicos que proporcionan la mayor parte de la funcionalidad disponible en las bibliotecas del núcleo de

Java, así como las bibliotecas Android-específicos.

➤ Marco de aplicación -La estructura de aplicaciones ofrece las clases utilizadas para crear aplicaciones de Android. También

proporciona una abstracción genérica para el acceso al hardware y gestiona los recursos de interfaz y aplicaciones de usuario.

➤ Capa de aplicación -Todas las aplicaciones, tanto nativos como de terceros, se basan en la capa de aplicación por medio de las mismas

librerías API. La capa de aplicación se ejecuta en el tiempo de ejecución de Android, utilizando las clases y los servicios puestos a
disposición de la estructura de aplicaciones.

El tiempo de ejecución de Android

Uno de los elementos clave de Android es el tiempo de ejecución de Android (ART). En lugar de utilizar una tradicional máquina virtual de Java, como Java ME,

Android utiliza su propio tiempo de ejecución diseñado a medida para asegurar que las múltiples instancias ejecutar de manera eficiente en un solo dispositivo.

ART utiliza el kernel de Linux subyacente del dispositivo para manejar la funcionalidad de bajo nivel, incluyendo la seguridad, roscado, y el proceso y la

gestión de memoria. También es posible escribir aplicaciones C / C ++ que ejecutan el sistema operativo más cerca de Linux subyacente. Aunque tú puede hacer

esto, en la mayoría de los casos no hay ninguna razón por la que debería necesitar.

Si se requiere la velocidad y la eficiencia de C / C ++ para su aplicación, Android proporciona un kit de desarrollo nativo (NDK). El
NDK está diseñado para permitir la creación de bibliotecas de C ++ utilizando las bibliotecas libc y libm, junto con el acceso nativo a
OpenGL.
Al presentar el Marco de Desarrollo | 11

NOTA Este libro se centra exclusivamente en la creación de aplicaciones que se ejecutan dentro del arte
utilizando el SDK; desarrollo NDK no está dentro del alcance de este libro. Si sus inclinaciones corren hacia
el desarrollo NDK, explorar el núcleo de Linux y bajo vientre C / C ++ de Android, la modificación de arte, o
de lo contrario jugando con las cosas bajo el capó, revisar el proyecto Android Open Source en

source.android.com.

Todas las apps acceso al hardware y servicio del sistema se gestiona utilizando el arte como una etapa intermedia. Al utilizar este tiempo de ejecución para

albergar ejecución de la aplicación, los desarrolladores tienen una capa de abstracción que asegura que nunca deberían tener que preocuparse de una

implementación de hardware en particular. ARTE ejecuta archivos ejecutables Dalvik (. Dex) -llamada después de una aplicación de la máquina virtual anterior

llamado “Dalvik”, un formato optimizado para asegurar la cantidad de memoria mínima. Tu creas . dex ejecutables mediante la transformación de Java o Kotlin

clases de lenguaje compilado utilizando las herramientas suministradas en el SDK.

NOTA A aprender más acerca de cómo crear ejecutables Dalvik en el Capítulo 2.

Arquitectura de aplicaciones Android


La arquitectura de Android fomenta la reutilización de componentes, lo que le permite publicar y compartir actividades, servicios y datos con otras

aplicaciones, con acceso gestionado por las restricciones de seguridad que defina. El mismo mecanismo que le permite producir un gestor de contactos

reemplazo o marcador telefónico puede dejar que usted expone los componentes de su aplicación con el fin de permitir que otros desarrolladores a crear en

ellos mediante la creación de nuevo frente interfaz de usuario termina o extensiones de funcionalidad.

Los siguientes servicios de aplicaciones son los pilares arquitectónicos de todas las aplicaciones para Android, que proporcionan el
marco que va a utilizar para su propio software:

➤ Director Gerente de actividad y Fragmento -Actividades y fragmentos se utilizan para definir la interfaz de usuario de sus

aplicaciones. Los Administradores de Actividades y el fragmento controlar el ciclo de vida de sus actividades y fragmentos,
respectivamente, incluyendo la gestión de la pila de Actividad (descritos en los capítulos 3 y 5).

➤ Puntos de vista -Se usa para construir los controles de interfaces de usuario dentro de sus actividades y fragmentos, como se describe en el capítulo 5.

➤ Administrador de notificaciones -Proporciona un mecanismo coherente y no intrusivo para la señalización de sus usuarios, como se describe en el

capítulo 11.

➤ Proveedores de contenido -Permite sus datos compartir aplicaciones, tal como se describe en el capítulo 10.

➤ Administrador de recursos -Permite recursos no código, tales como cadenas y gráficos, que se exterioriza, como se muestra en el Capítulo 4.

➤ intentos -Proporciona un mecanismo para la transferencia de datos entre aplicaciones y sus componentes, como se describe en el

Capítulo 6.
12 | CAPÍTULO 1 Hola, Android

Bibliotecas Android
Android ofrece una serie de APIs para el desarrollo de sus aplicaciones. En lugar de enumerarlos todos aquí, echa un vistazo a la
documentación en developer.android.com/reference/packages.html, lo que da una lista completa de los paquetes incluidos en el SDK de
Android.

Android tiene la intención de dirigirse a una amplia gama de hardware móvil, por lo que ser conscientes de que la idoneidad y la aplicación de
algunas de las API avanzadas u opcionales pueden variar dependiendo del dispositivo host.
2
Empezando
Contenido de este capítulo?

➤ Instalación del SDK de desarrollo de Android y Android Studio

ambiente

➤ Crear y depurar sus proyectos

➤ Escribir aplicaciones de Android con Kotlin

➤ El uso de la biblioteca de soporte Android

➤ La comprensión de las consideraciones de diseño móviles

➤ La importancia de optimizar para la velocidad y la eficiencia

➤ El diseño para pantallas pequeñas y las conexiones de datos móviles

➤ Introducción de dispositivos virtuales y el emulador de Android

➤ Consejos para el uso de Android Studio y mejorar el rendimiento de construcción

➤ rendimiento de las aplicaciones comprensión utilizando el Analizador de Android

➤ La introducción de Gradle construye y prueba de aplicaciones

DESCARGAS WROX.COM código de este Capítulo

Las descargas de este capítulo se encuentran en www.wrox.com. El código de este capítulo se divide en los siguientes
ejemplos importantes:

➤ Snippets_ch2.zip

➤ HelloWorld.zip

Android ® profesional, Cuarta edición. Reto Meier y Ian Lago. © 2018 John Wiley & Sons, Inc.
Publicado 2018 por John Wiley & Sons, Inc.
14 | CAPITULO 2 Empezando

PARA EMPEZAR EL DESARROLLO aplicaciones de Android

Todo lo que necesita para empezar a escribir sus propias aplicaciones Android es una copia del SDK de Android y un kit de desarrollo de
Java (JDK). A menos que seas un masoquista, también querrá utilizar un entorno de desarrollo integrado (IDE) -Te recomendamos
encarecidamente el uso de Android Studio, IDE apoyo oficial de Google para el desarrollo de aplicaciones Android que incluye un JDK
integrado y gestiona la instalación del SDK de Android y las herramientas asociadas.

Android Studio, el SDK de Android, y un JDK son cada uno disponible para Windows, Mac OS y Linux, para que pueda explorar Android
desde la comodidad de cualquier sistema operativo (OS) usted a favor. mismas aplicaciones Android se ejecutan dentro del ARTE logrado
en tiempo de ejecución, optimizado para dispositivos móviles resourceconstrained, así que no hay ventaja para el desarrollo de cualquier
sistema operativo particular. Tradicionalmente, el código de Android está escrito utilizando lenguaje Java sintaxis de hasta 2017 Android de
desarrollo de aplicaciones requiere el uso de Java. Android Studio 3.0 añadió Kotlin como una alternativa lenguaje totalmente compatible,
que le permite escribir aplicaciones de Android en parte, o totalmente, usando Kotlin. Kotlin es un lenguaje de tipos estáticos que es
totalmente compatible con los archivos fuente de Java y el tiempo de ejecución de Android. Se considera expresivo y concisa e introduce
mejoras, incluyendo la reducción de verbosidad de la lengua,

NOTA En el momento de escribir este libro de Java seguía siendo el valor predeterminado para nuevos proyectos, y la mayoría de los

proyectos de Android existentes fueron escritos predominantemente utilizando la sintaxis de Java. En consecuencia, hemos utilizado la

sintaxis de Java para los fragmentos de código y ejemplos de proyectos destacados dentro de este libro.

Dadas las ventajas de Kotlin, esperamos que su uso para aumentar rápidamente, y recomiendo que se familiarice
con el lenguaje Kotlin para la escritura de aplicaciones de Android. Más detalles sobre el uso Kotlin para sus
Aplicaciones de Android están disponibles en la sección acertadamente llamado “Introducción a la escritura
aplicaciones de Android con Kotlin.”

Las bibliotecas Android centrales incluyen la mayor parte de las características del núcleo de Java API, además del rico conjunto de APIs de
Android-específicos. Puede acceder a todas estas bibliotecas utilizando Java o Kotlin al escribir sus aplicaciones.

Aunque es posible descargar e instalar el SDK de Android y JDK separado, la instalación y el uso de Android Studio simplifica el
proceso de empezar. Android Studio incluye un OpenJDK integrado y gestiona la instalación de los componentes y herramientas de
SDK de Android con el Administrador de Android SDK integrado.

El SDK Manager se utiliza para descargar bibliotecas marco del SDK de Android y complementos opcionales (incluidas las API de Google y
bibliotecas de soporte). También incluye las herramientas de la plataforma y de desarrollo que va a utilizar para escribir y depurar sus
aplicaciones, como el emulador de Android para ejecutar sus proyectos y el Analizador de Android al perfil de la CPU, la memoria, y el uso de
la red. Todas estas herramientas se integran directamente en Android Studio para su conveniencia.
Desarrollar para Android | 15

Al final de este capítulo, se le han instalado Android Studio, el SDK de Android y sus complementos, y las herramientas de
desarrollo. Usted ha configurado el entorno de desarrollo, construido su primera aplicación Hola Mundo en Java y Kotlin, y correr
y depurado que el uso de las DDM y el emulador se ejecuta en un dispositivo virtual Android (AVD).

Si usted ha desarrollado para dispositivos móviles antes, ya sabe que su factor de forma pequeño, de vida limitada de la batería y la potencia
de procesamiento y la memoria restringida a crear algunos problemas de diseño únicos. Incluso si usted es nuevo en el juego, es obvio que
algunas de las cosas que usted puede dar por sentado en el escritorio, web o servidor-como siempre-en Internet y poder HAYA aplicable al
escribir aplicaciones para móviles o dispositivos integrados.

El entorno de usuario trae sus propios retos, además de los introducidos por limitaciones de hardware. Muchos dispositivos Android se
utilizan en movimiento y son a menudo una distracción más que el foco de atención, por lo que su aplicación tiene que ser rápido, sensible
y fácil de aprender. Incluso si su aplicación está diseñada para los dispositivos más propicias para una experiencia de inmersión, tales
como tabletas o televisores, los mismos principios de diseño pueden ser críticos para ofrecer una experiencia de usuario de alta calidad.

DESARROLLO PARA ANDROID

El SDK de Android incluye todas las herramientas y APIs que necesita para escribir aplicaciones móviles atractivas y potentes. El mayor desafío
con Android, como con cualquier nuevo conjunto de herramientas de desarrollo, es aprender las características y limitaciones de las API.

Dado que Android Studio 3.0, es posible escribir aplicaciones de Android con Java, Kotlin, o una combinación de ambos idiomas. Si
usted tiene experiencia en Java o Kotlin desarrollo, usted encontrará que la sintaxis y la gramática que ha estado usando se traducirá
directamente en Android. Si usted no tiene experiencia con Java, pero ha utilizado otros lenguajes orientados a objetos (tales como C
#), que debe encontrar la transición a la sintaxis de Java o Kotlin sencillo.

El poder de Android viene de su API, no el lenguaje que se utiliza, por lo que estar familiarizado con la sintaxis de Java o Kotlin y / o
clases de Java específico no presentará una desventaja significativa. No hay costo para descargar o utilizar el SDK, y Google no
requiere la aplicación de pasar un examen para distribuir sus aplicaciones terminados en la tienda de Google Play. Aunque Google
Play requiere una pequeña cuota única para publicar aplicaciones, si decide no distribuir a través de la Google Play Store, puede
hacerlo sin costo alguno.

Lo que usted necesita para comenzar

Dado que las aplicaciones de Android se ejecutan dentro del tiempo de ejecución de Android, puede escribirlas en cualquier plataforma que soporte
las herramientas de desarrollo. A lo largo de este libro que va a utilizar Android Studio, que actualmente soporta:

➤ Microsoft Windows 7/8/10 (de 32 o 64 bits)

➤ Mac OS X 10.8.5 o posterior

➤ Gnome o KDE de Linux (incluyendo GNU C Library 2.11 o posterior)


dieciséis | CAPITULO 2 Empezando

En todas las plataformas, Android Studio requiere al menos 2 GB de RAM (con 8 GB muy recomendable), y 1.280
resolución mínima de pantalla de 800 x.

NOTA el desarrollo de Android requiere Java Development Kit (JDK) 8 que se instalará. Estudio Android
ha integrado la última versión del OpenJDK desde Android Studio 2.2; si no va a utilizar Android de
estudio, tendrá que descargar e instalar un JDK compatible.

Desarrollo con Android Studio


Los ejemplos e instrucciones paso a paso en este libro están dirigidos a los desarrolladores que utilizan Android Studio. Android Studio es
IDE oficial de Android, construido en la cima de IntelliJ IDEA, un IDE popular para el desarrollo de Java, que también apoya el desarrollo
de Android usando Kotlin.

Android Studio es especialmente diseñado por el equipo de Android en Google para acelerar su desarrollo y ayudará a construir aplicaciones de alta

calidad. Es compatible con todos los formatos, incluyendo teléfonos Android, tabletas, TV, desgaste, y Auto-y ofrece herramientas diseñadas

específicamente para los desarrolladores de Android, incluyendo la edición rica de código, depuración, pruebas y perfiles. Algunas de las características

de Android Studio incluyen:

➤ edición de código inteligente con la terminación avanzado de código, refactorización, y análisis de código.

➤ integración de control de versiones incluyendo GitHub y subversión.

➤ Robusto marco de análisis estático con más de 280 diferentes controles de pelusa junto con soluciones rápidas.

➤ Extensas herramientas de prueba y los marcos incluyendo JUnit 4 y las pruebas de la interfaz de usuario funcionales. Usted puede

ejecutar las pruebas en un dispositivo, un emulador, un entorno de integración continua, o en el laboratorio de pruebas Firebase.

Además de estas características IDE, usando Android Studio en el desarrollo de Android ofrece algunas ventajas significativas a través de la

estrecha integración de muchas de las herramientas de construcción y depuración de Android, así como garantiza el apoyo a las últimas

versiones de la plataforma Android. Android Studio incluye las siguientes características:

➤ El asistente de proyectos Android, lo que simplifica la creación de nuevos proyectos e incluye varios

plantillas de aplicación y de actividad

➤ Editores para ayudar a crear, editar y validar sus recursos XML

➤ edificio automatizado de los proyectos de Android, Android conversión a archivos ejecutables (. dex), Envoltorios

ing para empaquetar archivos (. apk), y la instalación de paquetes Onto Android tiempos de riego (que se ejecuta tanto en el
emulador o en dispositivos físicos)

➤ El Administrador de dispositivos Android Virtual, que le permite crear y gestionar dispositivos virtuales a

Los emuladores de host que ejecutan una versión específica del sistema operativo Android, y con las limitaciones de hardware y sistema de memoria
Desarrollar para Android | 17

➤ El emulador de Android, incluyendo la capacidad de controlar la apariencia del emulador y NET

trabajar configuraciones de conexión, y la capacidad de simular llamadas entrantes, mensajes SMS, y los valores de los sensores

➤ El Analizador de Android, que permite monitorear la CPU, la memoria y rendimiento de la red

➤ El acceso al dispositivo o sistema de ficheros del emulador, lo que le permite navegar por el árbol de carpetas y

transferencia de archivos

➤ depuración en tiempo de ejecución, lo que le permite establecer puntos de interrupción y las pilas de vista de llamada

➤ Todas las salidas de registro y de la consola Android

NOTA Android Studio reemplaza las herramientas de desarrollo de Android (ADT) Plugin para Eclipse, que
está desfasada en 2014 y sunsetted después del lanzamiento de Android Studio 2.2 en 2016. A pesar de
que sigue siendo posible desarrollar para Android usando Eclipse o otros IDE, el uso de Android Studio es
muy recomendable.

Instalación de Android Studio y el SDK de Android


Puede descargar la última versión de Android Studio para la plataforma de desarrollo elegido desde la página principal de Android
en el Estudio developer.android.com/studio.

NOTA A menos que se indique lo contrario, la versión de Android Studio utilizado para escribir este libro era
Android Studio 3.0.1.

Cuando haya iniciado la descarga para su plataforma, se le mostrará las instrucciones detalladas de instalación que se pueden
resumir de la siguiente manera:

➤ ventanas -Ejecutar el ejecutable de instalación descargado. El instalador descarga Windows incluye OpenJDK y el SDK

de Android.

➤ Mac OS -Abrir el Estudio descargado Android DMG presentar, a continuación, arrastre Android Estudio en

su carpeta “Aplicaciones”. Haga doble clic para abrir Android de estudio, y el asistente de configuración le guiará a través del
resto de la instalación, lo que incluye la descarga del SDK de Android.

➤ Linux -Unzip el archivo descargado. cremallera presentar a un lugar adecuado para sus aplicaciones,

tal como dentro de / usr / local / para su perfil de usuario, o / optar/ para los usuarios comunes. Abrir un terminal, vaya a la androide-stu
/ bin / directorio y ejecutar studio.sh. El asistente de configuración le guiará a través del resto de la instalación, lo que
incluye la descarga del SDK de Android.

Dado que Android Studio 2.2, OpenJDK ha sido integrado con Android Studio, asegurando que no es necesario descargar e
instalar el JDK por separado.
18 | CAPITULO 2 Empezando

Una vez que se ha completado el asistente de instalación, la última plataforma SDK de Android; SDK, la plataforma y herramientas de
construcción; y la biblioteca de soporte se habrá descargado e instalado.

Puede descargar versiones de la plataforma de mayor edad, así como componentes adicionales utilizando el SDK Manager SDK como se
describe en la siguiente sección.

NOTA Como una plataforma de código abierto, la fuente de Android SDK también está disponible para su
descarga y compila a partir source.android.com.

Instalación de Componentes adicional Android SDK Utilizando el SDK Manager


El SDK Manager (Figura 2-1) está disponible a través de un acceso directo en la barra de herramientas, la opción de configuración del SDK de Android, o desde dentro

de las herramientas ➪ Androide ➪ SDK elemento de menú Manager. Ofrece pestañas para Plataformas SDK, herramientas de SDK, SDK y Sitios de actualización.

FIGURA 2-1

La pestaña Plataformas SDK muestra qué plataforma SDK que ha descargado. Por defecto, esto incluirá la nueva plataforma Android SDK, en

este caso, Android 8.1 Oreo (API nivel 27). La pestaña Herramientas SDK muestra qué herramientas y bibliotecas de soporte que tiene

instalada, incluyendo el SDK, la plataforma y herramientas de construcción-así como el repositorio de apoyo, que se requiere para utilizar la

biblioteca de soporte de Android (que se describe más adelante en este capítulo).

Al seleccionar el contenido Mostrar detalles del paquete casilla de verificación, se pueden encontrar detalles adicionales acerca de las versiones han sido instalados

cada herramienta.
Desarrollar para Android | 19

Descarga e instalación de actualizaciones a Android Studio, el SDK de Android, y herramientas

Android Studio recibe actualizaciones frecuentes que mejoran la estabilidad y añadir nuevas funciones. Se le pedirá con una punta de alerta
cuando una nueva versión de Android Studio está disponible para su descarga, como se muestra en la Figura 2-2.

FIGURA 2-2

Se le pedirá de manera similar cuando las nuevas revisiones del SDK de Android, herramientas de desarrollo, biblioteca de soporte, Kotlin, y
otros paquetes SDK estén disponibles.

Puede forzar un cheque por una nueva versión de Android Studio, abra el cuadro de diálogo Configuración y accede a Configuración ➪ Las actualizaciones
y hacer clic en “Comprobar ahora” botón, como se muestra en la Figura 2-3, o seleccionando la Ayuda ➪ Para comprobar elemento de menú
Actualizaciones.

FIGURA 2-3
20 | CAPITULO 2 Empezando

NOTA Además de la publicación oficial “estable”, disponible en el sitio para desarrolladores de Android, el equipo de
Android Studio también hace versiones preliminares de la próxima versión disponible para los desarrolladores que les
gusta vivir en el borde. Si usted también gusta vivir peligrosamente, puede cambiar el canal al que su instalación de
Android Studio está suscrito mediante la selección de Canarias o beta en el menú desplegable en la pantalla de
actualizaciones se muestra en la Figura 2-3.

Canarias representa la punta de lanza, lanzado aproximadamente cada semana. Estas son las primeras vistas
previas liberados con el fin de obtener información del mundo real durante el desarrollo.

Beta representa candidatos comunicado en el caso de Canarias construye estable, liberados y actualizados para obtener
retroalimentación antes de la versión estable.

Usted puede aprender más acerca de cada canal de liberación, incluyendo detalles sobre cómo instalar
instalar de forma paralela Android de estudio, por lo developer.android.com/ estudio / vista previa.

Creación de su primera aplicación Android


Con Android Studio instalado y descargado el SDK ya está listo para comenzar a desarrollar aplicaciones para Android. Vamos a empezar
por la creación de un nuevo proyecto Android, la configuración del emulador de Android, y configurar el estudio Android correr y depurar configuraciones,
como se describe en las siguientes secciones.

Creación de un nuevo proyecto Android

Para crear un nuevo proyecto Android utilizando Asistente para nuevos proyectos de Android Studio, haga lo siguiente:

1. La primera vez que inicie Android Studio se le presentará la pantalla de bienvenida se muestra
en la Figura 2-4. Puede volver a esta pantalla seleccionando el archivo ➪ Cerrar elemento de menú para cerrar todos los proyectos
abiertos. En la pantalla de bienvenida, seleccione la opción “Iniciar un nuevo proyecto Android Studio”. Por otra parte, dentro de Android
Studio seleccione el archivo ➪ Nuevo ➪ Nuevo proyecto ... del menú.

2. En el asistente que aparece, introduzca los datos para su nuevo proyecto. En la primera página (Figura 2-5) introduce un nombre de
aplicación y su dominio de la empresa. Estos se pueden combinar para crear un nombre de paquete único como se muestra en el
asistente.

Cada aplicación Android debe tener un nombre único paquete, por lo que es una buena práctica usar un dominio es el propietario
para minimizar la posibilidad de una colisión. Dicho esto, poseer el dominio que utiliza no es obligatoria o forzada, por lo que se puede
utilizar casi cualquier dominio que quiera siempre el nombre del paquete resultante es única.

Por último, seleccione la ubicación del directorio a la que se guardará el proyecto.


Desarrollar para Android | 21

FIGURA 2-4

FIGURA 2-5
22 | CAPITULO 2 Empezando

3. En la siguiente página (Figura 2-6) le permite seleccionar los factores de forma que desea apoyar dentro de este
proyecto, así como la versión de la plataforma Android mínimo sobre el que se ejecutará la aplicación. Para empezar,
orientaremos sólo teléfonos y tabletas y utilizar el SDK mínimo predeterminado.

FIGURA 2-6

NOTA Selección de la versión mínima del SDK le permite elegir el nivel de compatibilidad hacia atrás que está
dispuesto a apoyar. Cuanto menor sea esta versión del SDK, los más dispositivos serán capaces de ejecutar su
aplicación, pero esto también hará que sea más difícil para apoyar nuevas características de la plataforma.

Al seleccionar cada SDK mínimo de la gota abajo mostrará la proporción de los dispositivos Android activos
que ejecutan versión de la plataforma.

En el momento de escribir estas líneas, más del 90% de los dispositivos Android se ejecuta al menos Android 4.4
KitKat (API nivel 19), mientras que la última versión de Android era
8.1 (API nivel 27).

4. En la siguiente página (Figura 2-7) le permite seleccionar una plantilla para la actividad principal de su aplicación (usuario inter-
pantalla de la cara). Seleccione la actividad vacío.
Desarrollar para Android | 23

FIGURA 2-7

5. La página final (Figura 2-8) le permite especificar el nombre de clase para su actividad inicial, y
especifique el nombre del archivo XML que se utiliza para proporcionar el diseño de interfaz de usuario de la Actividad. En el caso de la
plantilla Actividad vacío, también puede elegir si desea que el asistente para generar un archivo de diseño en absoluto. También tiene la
opción de hacer su actividad compatible con versiones anteriores mediante la selección de la casilla de verificación Compatibilidad hacia
atrás, que es muy recomendable. Marcando esta casilla dará lugar a la nueva actividad heredando de la Biblioteca de Soporte Android AppCompatActivi
clase en lugar de la estructura de Actividad clase, lo que le permitirá a su actividad para aprovechar las nuevas funciones de la API de una
manera que es compatible con versiones anteriores.

6. Una vez introducidos estos datos, haga clic en Finalizar.

Android Studio ahora va a crear un nuevo proyecto que incluye una clase que se extiende
AppCompatActivity. En lugar de ser completamente vacío, los implementos de la plantilla por defecto “Hello World”.

Antes de modificar el proyecto, aprovechar esta oportunidad para crear un dispositivo virtual Android, habilitar la depuración en un dispositivo
físico, y ejecutar nuestro nuevo proyecto Hello World.
24 | CAPITULO 2 Empezando

FIGURA 2-8

Creación de un dispositivo virtual Android


Los dispositivos virtuales Android (AVDS) se utilizan para simular las configuraciones de hardware y software de los dispositivos Android físicas.
El emulador de Android se ejecuta dentro de AVDs, lo que le permite probar las aplicaciones en una variedad de diferentes plataformas de
hardware y software.

No hay AVDs prediseñados incluidos en el estudio Android o SDK de Android descargas tanto, si usted no tiene un dispositivo
físico, tendrá que crear al menos una antes de poder ejecutar y depurar sus aplicaciones:

1. Seleccione Herramientas ➪ Androide ➪ AVD Manager (o seleccione el icono del Administrador de AVD en la barra de herramientas de Android Studio).

2. Haga clic en el botón “Crear dispositivo virtual ...”.


El cuadro de diálogo de configuración de dispositivo virtual resultante (Figura 2-9) le permite seleccionar una definición de dispositivo
de una lista de Pixel y Nexus hardware y dispositivo estándar ciones-configuraciones cada una con su propio tamaño físico, la
resolución y densidad de píxeles.

3. A continuación, se le pedirá que seleccione una imagen del sistema de dispositivo correspondiente a un determinado Android
versión de la plataforma, como se muestra en la figura 2-10. Si no lo ha hecho, tendrá que descargar la imagen deseada del
sistema antes de que pueda ser utilizado.
Desarrollar para Android | 25

FIGURA 2-9

FIGURA 2-10
26 | CAPITULO 2 Empezando

Tenga en cuenta que para cada versión de la plataforma, seleccionar imágenes del sistema para diferentes interfaces de aplicación
(ITB) -típicamente binarios x86 o ARM. Considere el uso de una imagen del sistema utilizando la misma arquitectura que el ordenador
host para maximizar el rendimiento del emulador. También puede decidir si desea una imagen del sistema que incluye las API de
Google. Estos son necesarios si su aplicación incluye funciones de Google Play servicios tales como mapas y servicios basados ​en
localización, tal como se describe en el capítulo 15.

4. Especificar un nombre de dispositivo descriptivo, y luego pulsa Finalizar para crear un nuevo AVD, como se muestra en la figura 2-11. Tenga en

cuenta que al hacer clic en Mostrar configuración avanzada puede revelar opciones adicionales para asignar la cámara web para la cámara frontal

o trasera, ajustar la velocidad de la red emulado y la latencia, y personalizar el número de núcleos emulados, memoria del sistema y de

almacenamiento.

FIGURA 2-11

5. Inicio de una nueva AVD puede llevar algún tiempo, así que empieza ahora haciendo clic en la flecha verde en la columna derecha de la. Esto

asegurará que el emulador está preparado y en funcionamiento cuando esté listo para ejecutar su aplicación en él.

Configuración de un dispositivo físico para Pruebas y depuración


No hay nada como hacer el software se ejecute en el hardware real, así que si tienes un dispositivo Android, es simple de ejecutar y
depurar sus aplicaciones en él directamente:
Desarrollar para Android | 27

1. Para empezar, la activación del modo desarrollador en su dispositivo. Abra la configuración del teléfono y buscar y seleccionar Sistema ➪ “Sobre el

teléfono.” Vaya a la parte inferior de la lista resultante hasta que “Número de compilación” es visible, como se muestra en la Figura 2-12.

FIGURA 2-12

2. Toque “Número de compilación” siete veces, hasta que aparezca un mensaje de felicitación que el
convertirse en un desarrollador. Si se embarcó en su viaje para convertirse en un desarrollador de Android para ganar una apuesta, ahora se

puede recoger de forma segura. ¡Felicidades!

3. Si no es así, navegar hacia atrás, y encontrará una nueva categoría de configuración de la etiqueta “Opciones de desarrollador.” Seleccionar, y

desplazarse hasta que aparezca la opción de “Depuración USB”, como se muestra en la figura 2-13.
28 | CAPITULO 2 Empezando

FIGURA 2-13

4. Habilitar depuración de USB."

5. A continuación, conecte el dispositivo al ordenador central de desarrollo mediante un cable USB. Tu dispositivo
se mostrará el cuadro de diálogo que se muestra en la figura 2-14, que le pregunta si desea permitir la depuración USB cuando se conecta al

ordenador actual. Seleccione Aceptar.


Desarrollar para Android | 29

FIGURA 2-14

6. Una vez conectado, el dispositivo estará disponible como un objetivo en el lanzamiento de su aplicación para
Ejecución o depuración dentro de Android Studio.

Ejecución y depuración de aplicaciones Android


Usted ha creado su primer proyecto y creó un dispositivo virtual Android (o conectado un dispositivo físico) en el que para
ejecutarlo. Antes de realizar cambios, vamos a intentar ejecutar y depurar el proyecto Hello World.
30 | CAPITULO 2 Empezando

En el menú Ejecutar, seleccione “Ejecutar aplicación” (o “aplicación de depuración”). Si aún no lo ha seleccionado un valor predeterminado, se le presentará

con el cuadro de diálogo que se muestra en la figura 2-15, que le solicitará que seleccione su destino: un despliegue del dispositivo conectado, un AVD correr,

o una definida (pero aún no se ejecuta ) AVD.

FIGURA 2-15

Ejecución o depuración de su aplicación hace lo siguiente detrás de las escenas:

➤ Compila la fuente actual proyecto de código de bytes, y convierte a un archivo ejecutable que Android

(. Dex)

➤ Paquetes el ejecutable y los recursos de su proyecto y se manifiestan en un paquete Android

(. APK)

➤ Inicia el dispositivo virtual (si orientó uno y no está ya en ejecución)

➤ Despliega el APK al dispositivo de destino y lo instala

➤ Inicia su aplicación

Si va a depurar, a continuación, se adjunta el depurador Android de estudio, lo que le permite establecer puntos de interrupción y depurar el
código.

Si todo funciona correctamente, verá una nueva actividad que se ejecuta en el dispositivo o en el emulador, como se muestra en
la figura 2-16.

La comprensión de Hello World


Dar un paso atrás y echar un vistazo al código fuente para su primera aplicación para Android, comenzando con la MainActivity.java expediente.
En Android, Actividad es la clase base para las pantallas visuales e interactivas dentro de su aplicación; es más o menos equivalente a un
formulario en el desarrollo de escritorio tradicional (y se describe en detalle en el capítulo 3, “Aplicaciones de las actividades y los
fragmentos, ¡por Dios!”).

AppCompatActivity es una variación de la Actividad clase suministrada por la biblioteca de soporte Android, que ofrece compatibilidad con
versiones anteriores. Utilizando AppCompatActivity con preferencia a la Actividad
clase se considera la mejor práctica, y vamos a estar haciendo por lo largo de este libro. Tenga en cuenta que, por convención, que todavía se refieren a las

clases que se extienden AppCompatActivity como Ocupaciones.


Desarrollar para Android | 31

FIGURA 2-16

Listado 2-1 muestra el código esqueleto de una actividad; tenga en cuenta que se extiende AppCompatActivity y anula el onCreate método.

Listado 2-1: Hola Mundo

com.professionalandroid.apps.helloworld paquete;

android.support.v7.app.AppCompatActivity importación; android.os.Bundle


importación;

MainActivity clase pública se extiende AppCompatActivity {

@Anular
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState); setContentView
(R.layout.activity_main); }}

componentes visuales dentro de las actividades se denominan Puntos de vista, que son similares a los controles o widgets en el escritorio tradicional
y desarrollo web. La plantilla Hello World creado por las sustituciones del asistente
32 | CAPITULO 2 Empezando

la onCreate método que se invoca setContentView, que expone la interfaz de usuario mediante el inflado de un recurso de diseño, como se destaca en negrita
en el siguiente fragmento:

@Anular
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
}

Los recursos para un proyecto de Android se almacenan en el res carpeta de la jerarquía de proyecto, que incluye diseño, valores, estirable, y mipmap

subcarpetas. Android Studio interpreta estos recursos y proporciona acceso en tiempo de diseño a ellos a través de la R variables, tal como se

describe en el Capítulo 4. Listado 2-2 muestra el diseño de interfaz de usuario tal como se define en el activity_main.xml archivo, creado por la

plantilla de proyecto Android y se almacena en el proyecto de res / layout carpeta.

LISTADO 2-2: recurso de diseño Hello World

<? Xml version = "1.0" encoding = "UTF-8"?>


<Android.support.constraint.ConstraintLayout
xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: app =
"http://schemas.android.com/apk/res-auto" xmlns: Herramientas = "http: /
/schemas.android.com/tools" android: layout_width = "match_parent" android: layout_height =
"match_parent"

herramientas: context = "com.professionalandroid.apps.myapplication.MainActivity"> <TextView

Android: layout_width = "wrap_content" android:


layout_height = "wrap_content" android: text = "Hello World!"

aplicación: layout_constraintBottom_toBottomOf = "padre" de la aplicación:


"padre" layout_constraintLeft_toLeftOf = aplicación:
layout_constraintRight_toRightOf = "padre" de la aplicación:
layout_constraintTop_toTopOf = "padre" />
</android.support.constraint.ConstraintLayout>

NOTA El diseño específico creado como parte del Asistente para proyectos de Android puede cambiar con el tiempo, por
lo que su diseño puede ser ligeramente diferente al XML mostrado aquí, aunque la interfaz de usuario resultante debe
aparecer muy similar.

La definición de la interfaz de usuario en XML e inflando es la forma preferida de poner en práctica sus interfaces de usuario (UI), debido a que ordenadamente

desacopla su lógica de aplicación a partir del diseño de interfaz de usuario. Para conseguir el acceso a los elementos de la interfaz de usuario en el código, puede

agregar atributos de identificador a ellos en la definición XML:

<TextView
android: id = "@ + / Identificación del myTextView"

Android: layout_width = "wrap_content" android:


layout_height = "wrap_content"
Desarrollar para Android | 33

android: text = "Hello World!"


aplicación: layout_constraintBottom_toBottomOf = "padre" de la aplicación:
layout_constraintLeft_toLeftOf = "padre" de la aplicación:
layout_constraintRight_toRightOf = "padre" de la aplicación:
layout_constraintTop_toTopOf = "padre" />

A continuación, puede utilizar la findViewById Método para devolver una referencia a cada elemento con nombre en tiempo de ejecución:

TextView myTextView = findViewById (R.id.myTextView);

Como alternativa (aunque generalmente no se considera una buena práctica), puede crear su diseño directamente en el código, como se
muestra en el listado 2-3.

LISTADO 2-3: La creación de diseños de código

public void onCreate (Bundle savedInstanceState) {


super.onCreate (savedInstanceState);

RelativeLayout.LayoutParams lp; lp =

nuevos RelativeLayout.LayoutParams (LinearLayout.LayoutParams. MATCH_PARENT,


LinearLayout.LayoutParams. MATCH_PARENT);

RelativeLayout.LayoutParams textViewLP; textViewLP = new


RelativeLayout.LayoutParams (
RelativeLayout.LayoutParams. RESUMIR CONTENIDO,
RelativeLayout.LayoutParams. RESUMIR CONTENIDO);

Recursos res = getResources ();


int HPAD = res.getDimensionPixelSize (R.dimen. activity_horizontal_margin);
int vPad = res.getDimensionPixelSize (R.dimen. activity_vertical_margin);

RelativeLayout rl = new RelativeLayout (this); rl.setPadding (HPAD, vPad,


HPAD, vPad);

TextView myTextView = new TextView (this); myTextView.setText (


"Hello World!");

rl.addView (myTextView, textViewLP);

addContentView (rl, lp); }

Tenga en cuenta que todas las propiedades disponibles en código también se pueden configurar con atributos en el diseño XML. De manera más general,

manteniendo el diseño visual desacoplado del código de la aplicación ayuda a mantener el concisa código. Con Android disponible en centenares de

diferentes dispositivos de diferentes tamaños de pantalla, la definición de los diseños a medida recursos XML hace que sea más fácil para que lo incluya

múltiples diseños optimizados para diferentes pantallas.

Se aprende cómo construir su interfaz de usuario mediante la creación de diseños y la construcción de sus propias vistas personalizadas en el capítulo 5, “la creación de

interfaces de usuario.”
34 | CAPITULO 2 Empezando

La apertura de Proyectos de la muestra Android

Android incluye una serie de proyectos de la muestra bien documentados que son una excelente fuente de ejemplos completos, de
trabajo de las aplicaciones escritas para Android. Cuando termine de configurar el entorno de desarrollo, vale la pena ir a través de
algunos de ellos.

Los proyectos de ejemplo Android se almacenan en GitHub, y Android Studio proporciona un mecanismo sencillo para la clonación de ellas:

1. Desde el interior de Android Studio, seleccione Archivo ➪ Nuevo ➪ Importación Muestra ... para abrir el Asistente de muestra de importación, como

se muestra en la figura 2-17. También puede seleccionar “Importar un ejemplo de código de Android” de la bienvenida del asistente de Estudio

Android a si no tiene proyectos abiertos actualmente.

FIGURA 2-17

2. Seleccione la muestra que desea importar y haga clic en Siguiente.

3. Especificar un nombre de la aplicación y la ubicación en el equipo host y haga clic en Finalizar para descargar y abrir la muestra.

El proyecto muestra seleccionada será clonado a partir de GitHub y se abrió como un nuevo proyecto Android Studio.

NOTA Para ver todos los ejemplos de código de Android disponibles para la importación en Android
Studio, consulte la página de ejemplos de Google en GitHub en github.com/ googlesamples /.
Desarrollar para Android | 35

Introducción a la escritura aplicaciones de Android con Kotlin


Hasta 2017, el desarrollo de aplicaciones para Android requiere el uso de la sintaxis del lenguaje Java. Android Studio
3.0 añade Kotlin como una alternativa lenguaje totalmente compatible.

Kotlin es un lenguaje de tipos estáticos que es totalmente compatible con la sintaxis del lenguaje Java existente y el tiempo de
ejecución se utiliza con Android. Se considera expresiva y conciso, e introduce mejoras, incluyendo la verbosidad lenguaje reducida,
seguridad nula triple, funciones de extensión, y la notación infija.

Dado que Android Studio 3.0, Kotlin es un lenguaje de desarrollo de Android con apoyo oficial; Sin embargo, en el momento de la escritura de
este libro, Java seguía siendo el valor predeterminado para nuevos proyectos y más proyectos de Android existentes siguen fueron escritas
predominantemente utilizando la sintaxis de Java. También es muy fácil de convertir la sintaxis de Java en Kotlin, simplemente mediante la
sintaxis de Java pegar en un archivo de origen Kotlin. Como resultado, hemos utilizado la sintaxis de Java dentro de los fragmentos de código y
ejemplos de proyectos destacados dentro de este libro. Dadas las ventajas de Kotlin en términos de mejora de tiempo de desarrollo y la
legibilidad del código, se espera que la proporción de aplicaciones escritas principalmente en Kotlin a aumentar rápidamente, y es muy
recomendable que se familiarice con el lenguaje Kotlin para la escritura de aplicaciones de Android. Para ayudar, cada uno de los fragmentos de
código y proyectos de ejemplo están también disponibles en Kotlin,

Sus proyectos de Android pueden ser escritos desde cero en Kotlin, puede incluir archivos de código fuente de Java y Kotlin interoperables, o se pueden

convertir de archivos de código fuente de Java para Kotlin durante el desarrollo. Para empezar un nuevo proyecto en Kotlin, seleccione el archivo ➪ Nuevo ➪ Nuevo

proyecto ... del menú, como se ha descrito anteriormente, pero en la primera página del asistente, seleccione la casilla de verificación “Incluye soporte

Kotlin”, como se muestra en la figura 2-18.

FIGURA 2-18
36 | CAPITULO 2 Empezando

Continuar con el asistente como se describe en la sección anterior. Cuando se haya completado, echar un vistazo al código fuente Kotlin para su
actividad en el MainActivity.kt expediente. Kotlin archivos se almacenan junto con los archivos fuente de Java y se pueden encontrar en la carpeta de Java
cuando se utiliza el punto de vista del proyecto Android:

com.professionalandroid.apps.myapplication paquete

importación android.support.v7.app.AppCompatActivity importación


android.os.Bundle

clase MainActivity: AppCompatActivity () {

anular la diversión onCreate (savedInstanceState: Bundle?) {


super.onCreate (savedInstanceState) setContentView
(R.layout.activity_main)}}

Tenga en cuenta que mientras que el código es algo más concisa, los cambios sintácticos en este punto son mínimos. Las declaraciones del
paquete y de importación son los mismos, la Actividad principal clase todavía se extiende
AppCompatActivity, y la anulación de la onCreate método sigue siendo el mismo. Para añadir un nuevo archivo Kotlin a su proyecto, seleccione

Kotlin de la lista desplegable Idioma de origen al añadir un nuevo componente de la aplicación del Archivo ➪ Nuevo menú. Como alternativa,

puede seleccionar el archivo ➪ Nuevo ➪ Archivo Kotlin / elemento de menú Clase para crear un archivo básico.

Dado que los archivos Kotlin y Java pueden coexistir en el mismo proyecto, es posible añadir archivos de origen Kotlin a un proyecto que
comenzó sin marcar la casilla Soporte Kotlin o añadir archivos fuente de Java a un proyecto iniciado con el apoyo Kotlin.

También es posible convertir archivos de origen de la sintaxis de Java existentes en Kotlin. Usted puede hacer esto mediante la apertura de un archivo
fuente de Java existente y seleccionar el Código ➪ Convertir archivos Java para Kotlin elemento de menú Archivo. Como alternativa, puede crear un nuevo
archivo Kotlin y pegar la sintaxis de Java de código fuente en ella. Se le pedirá para convertir el código pegado en Kotlin, como se muestra en la figura 2-19.

FIGURA 2-19

Tenga en cuenta que estas conversiones automáticas no siempre pueden utilizar idiomática Kotlin, por lo que el código resultante puede no utilizar las mejores

características del lenguaje de Kotlin.

Usando el paquete de biblioteca androide de la ayuda


El paquete de biblioteca de soporte Android (también conocida como la biblioteca de compatibilidad o AppCompat) es un conjunto de bibliotecas que puede

incluir como parte de sus proyectos, para ganar cualquiera de las API de conveniencia que
Desarrollar para Android | 37

No se empaquetan como parte del marco (como la vista Pager), o las API útiles que no están disponibles en todas las versiones de
plataforma (tales como fragmentos).

La biblioteca de soporte le permite utilizar las funciones API del marco que se introdujeron en las versiones más nuevas de la plataforma Android en los dispositivos

que ejecutan versiones anteriores de la plataforma. Esto le ayuda a proporcionar una experiencia de usuario consistente y simplifica enormemente el proceso de

desarrollo mediante la reducción de la carga de mantener versiones de la plataforma de mayor edad, al tomar ventaja de las características más recientes.

NOTA Es una buena práctica usar la biblioteca de soporte en lugar de las API de marco cuando se quiere apoyar
a los dispositivos que ejecutan la plataforma comunicados anteriores, y donde la biblioteca de compatibilidad
ofrece toda la funcionalidad que necesita. En consecuencia, los ejemplos de este libro se centrará en Android 8.1
(API nivel 27) y el uso de las API de biblioteca de apoyo cuando sea posible, de preferencia al marco, además de
destacar áreas específicas en la biblioteca de soporte puede no ser una alternativa adecuada.

El paquete de biblioteca de soporte Android contiene varias bibliotecas individuales, cada uno de los cuales ofrece soporte para un rango específico
de versiones de la plataforma Android y características.

Vamos a introducir nuevas bibliotecas como se requiere en los siguientes capítulos. Para empezar, es una buena práctica incluir la biblioteca
v7 appcompat en todos los proyectos nuevos, ya que es compatible con una amplia gama de versiones Android, de nuevo a Android 2.3
(API nivel 9) -y proporciona APIs para muchos patrones de interfaz de usuario recomendados.

Las plantillas de aplicaciones proporcionadas por Android Studio, incluyendo el ejemplo Hello World hemos creado anteriormente incluyen
una dependencia de la biblioteca v7 appcompat por defecto.

Para incorporar un paquete de biblioteca de soporte Android en su proyecto, realice los siguientes pasos:

1. Utilice el Administrador de SDK para asegurar que haya descargado el apoyo Repositorio Android.
2. Añadir una dependencia a su Gradle construir para la biblioteca deseada, ya sea por:

2.1 La apertura de su Módulo: build.gradle aplicación presentar y añadir una referencia a la biblioteca
nombre y la versión que desea incluir, dentro del nodo de dependencia:

{dependencias
[... dependencias existentes ...]
aplicación 'com.android.support:appcompat-v7:27.1.1'
}

2.2 O el uso de la interfaz de usuario de Android Estructura del proyecto de estudio, como se muestra en la figura 2-20. Seleccione el archivo
➪ Estructura del proyecto ..., elemento de menú y seleccionar el módulo de aplicación de la lista en el antes de elegir la ficha
Dependencias izquierda. Añadir una nueva biblioteca seleccionando el símbolo verde “más” en la barra de herramientas del lado
derecho y seleccionar la biblioteca deseada.
38 | CAPITULO 2 Empezando

FIGURA 2-20

Nótese que estamos añadiendo una dependencia a una versión específica de la biblioteca de soporte. Por diseño, el paquete de biblioteca de
soporte Android se actualiza con más frecuencia que el SDK de Android marco. Al descargar las nuevas versiones de las bibliotecas de soporte, y
la actualización de sus dependencias para hacer referencia a las versiones más recientes, puede continuar para incorporar correcciones de
errores y mejoras en su aplicación como las bibliotecas de soporte se actualizan.

NOTA Las clases de biblioteca de soporte reflejan los nombres de sus homólogos marco. En la mayoría de los
casos, la biblioteca de clases de apoyo se fijó posteriormente con compat ( por ejemplo, NotificationCompat); Sin
embargo, algunas clases anteriores biblioteca de soporte usan los mismos nombres que sus equivalentes marco.
Como resultado, hay un riesgo significativo de que la finalización de código y herramientas automáticas de gestión
de importación en Android Studio (y otros IDE) seleccionarán la biblioteca de malo en particular cuando está la
construcción contra las nuevas versiones del SDK.

Es una buena práctica para fijar su objetivo de generación de proyecto a la versión mínima plataforma va a apoyar y
garantizar las declaraciones de importación están utilizando la biblioteca de compatibilidad para las clases que
también existen en el marco de destino.
Desarrollo para dispositivos móviles e integrados | 39

Desarrollo para dispositivos móviles e integrados


Android hace mucho para simplificar Mobile o el desarrollo de software de dispositivos integrados, sino para construir aplicaciones de alta calidad
que necesita para comprender las razones detrás de las convenciones. Usted tiene varios factores a considerar al escribir software para
dispositivos móviles e integrados, y en el desarrollo para Android en particular.

NOTA En este capítulo se aprende algunas de las técnicas y las mejores prácticas para la escritura de código de
Android eficiente. En capítulos posteriores, estas mejores prácticas a veces se vean comprometidos por la claridad y
la brevedad cuando se introducen nuevos conceptos o funcionalidad de Android. En la mejor tradición de “Haz lo
que digo, no lo que hago”, algunos ejemplos mostrarán la forma más sencilla (o más fácil de entender) de hacer
algo, no necesariamente la mejor forma de hacerlo en la producción.

Consideraciones de diseño de hardware-impuesta


Pequeño y portátil, los dispositivos móviles ofrecen interesantes oportunidades para el desarrollo de software. Su tamaño de pantalla limitado y reducido de

memoria, almacenamiento y potencia de procesador son mucho menos emocionante, y en su lugar presentan algunos desafíos únicos.

En comparación con los ordenadores de sobremesa o portátiles, dispositivos móviles tienen relativamente:

➤ de baja potencia de procesamiento

➤ RAM limitada

➤ limitada capacidad de almacenamiento

➤ pantallas pequeñas

➤ Los altos costos asociados con las transferencias de datos

➤ conectividad intermitente, lentas velocidades de transferencia de datos y alta latencia

➤ duración de la batería limitada

Cada nueva generación de dispositivos de mejora en muchas de estas restricciones, pero el ecosistema de dispositivos también atiende a una amplia variedad

de precios, lo que se traduce en una variedad significativa en las capacidades del hardware. Esta es amplificada por el enorme crecimiento en la adopción de

teléfonos inteligentes en los mercados emergentes, que son significativamente más sensibles al precio, y que a su vez resulta en un gran número de nuevos

dispositivos con hardware de especificación inferior.

La expansión de Android en un cada vez más diversa variedad de factores de forma, incluyendo tabletas, televisores, automotriz
cabeza-unidades, y dispositivos portátiles amplía aún más la gama de dispositivos en los que su aplicación puede estar en ejecución.
40 | CAPITULO 2 Empezando

En algunos casos es posible que su aplicación se ejecuta en hardware mucho más potente de lo que esperaba; Sin embargo, siempre es una
buena práctica diseñar para acomodar el peor de los casos para asegurarse de que está proporcionando una experiencia de usuario a todos
los usuarios, sin importar su plataforma de hardware.

Cuestiones de rendimiento

Los fabricantes de dispositivos incrustados, en particular los dispositivos móviles, a menudo valoran más delgadas factores de forma y más grande (y
mayor resolución) pantallas de más de mejoras significativas en velocidades de procesador. Para nosotros como desarrolladores, eso significa perder
la ventaja que ofrece tradicionalmente gracias a la ley de Moore (la duplicación del número de transistores colocados en un circuito integrado cada dos
años). En el escritorio y hardware de servidor, la Ley de Moore típicamente resulta directamente en mejoras de rendimiento del procesador; para
dispositivos móviles, en su lugar, los dispositivos más delgados, con brillantes, pantallas de mayor resolución. Por comparación, las mejoras en la
potencia del procesador en un segundo plano.

En la práctica, esto significa que siempre hay que optimizar el código para que se ejecute de forma rápida y responsable, asumiendo que
las mejoras en el hardware durante la vida útil de su software es poco probable que hacer ningún favor.

la eficiencia del código es un gran tema en ingeniería de software, así que no voy a tratar de cubrir ampliamente aquí. Más adelante en este capítulo se
aprende algunos consejos de eficiencia en Android específica, pero por ahora señalar que la eficiencia es especialmente importante para las plataformas
con recursos limitados.

Esperar limitada capacidad de almacenamiento

Los avances en discos de memoria flash y de estado sólido han dado lugar a un aumento dramático en la capacidad de almacenamiento de dispositivos móviles. Aunque los

dispositivos con 64, 128, o incluso 256 GB de almacenamiento ya no poco frecuentes son, muchos dispositivos de gama baja populares tienen espacio significativamente

menos disponibles. Teniendo en cuenta que la mayor parte del almacenamiento disponible en un dispositivo móvil es probable que se utilicen para almacenar fotos, música y

películas, los usuarios son propensos a desinstalar aplicaciones que se están produciendo una cantidad desproporcionada de espacio de almacenamiento en relación con su

valor percibido.

Como resultado, el tamaño de la instalación de la aplicación es una consideración importante, aunque aún más importante es asegurarse de
que su solicitud está educado en el uso de los recursos del sistema, por lo que debe tener en cuenta cómo se almacenan los datos de la
aplicación.

Para hacer la vida más fácil, puede utilizar las bases de datos de Android a persistir, reutilizar y compartir grandes cantidades de datos, como se describe
en el capítulo 9, “Creación y uso de bases de datos.” Para los archivos, preferencias e información de estado, Android proporciona marcos optimizados,
como se describe en el capítulo 8, “Archivos, estado de ahorro, y preferencias del usuario.”

Parte de ser educado es la limpieza después de ti mismo. Técnicas tales como el almacenamiento en caché, la búsqueda previa, y la carga diferida son
útiles para limitar las búsquedas repetitivas de red y mejorar la respuesta de las aplicaciones, pero no dejan archivos en el sistema de archivos o registros en
una base de datos cuando están ya no son necesarios.

Diseño para diferentes pantallas y formatos


El pequeño tamaño y portabilidad de los móviles son reto para la creación de interfaces de buenas, sobre todo cuando los usuarios están
demandando una experiencia gráfica de usuario cada vez sorprendente y rica en información.
Desarrollo para dispositivos móviles e integrados | 41

En combinación con la amplia gama de tamaños de pantalla que conforman el ecosistema de dispositivos Android, la creación de interfaces de

usuario consistentes, intuitivos y agradables puede ser un desafío significativo. Escribir sus aplicaciones sabiendo que los usuarios a menudo

sólo echar un vistazo a la pantalla. Haga que sus aplicaciones intuitivas y fáciles de usar, reduciendo el número de controles y poniendo al frente

de la información más importante y central.

controles gráficos, tales como los que se va a crear en el capítulo 5, son un excelente medio de mostrar una gran cantidad de información de una

manera que es fácil de entender. En lugar de una pantalla llena de texto con una gran cantidad de botones y cuadros de entrada de texto, utilizar

colores, formas y gráficos para transmitir información. También tendrá que considerar cómo táctil de la entrada va a afectar a su diseño de la

interfaz, y cómo se puede soportar dispositivos accesibilidad y no táctil como televisores.

los dispositivos Android están ahora disponibles en una gran variedad de tamaños de pantalla, resoluciones y mecanismos de entrada. Con el apoyo de

múltiples ventanas incluido en Android 7.0, el tamaño de la pantalla para su aplicación puede incluso cambiar mientras se ejecuta en un solo dispositivo.

Para asegurarse de que su aplicación se ve bien y se comporta bien en todos los posibles dispositivos de acogida, es necesario crear diseños que

responden y probar la aplicación en una variedad de pantallas, optimizando para pantallas pequeñas y tabletas, garantizando al mismo tiempo que sus

interfaces de usuario se escalan bien.

Se aprende algunas técnicas para la optimización de su interfaz de usuario para diferentes tamaños de pantalla en los capítulos 4 y 5.

Esperar velocidades bajas, alta latencia


La capacidad de conectarse a Internet es una gran parte de lo que ha hecho que los teléfonos inteligentes inteligente, y ubicua. Por desgracia, la

conexión a Internet móvil no es tan rápido, fiable, barato, o están fácilmente disponibles como nos gustaría; cuando se está desarrollando sus

aplicaciones basadas en Internet, lo mejor es asumir que la conexión de red será lenta e intermitente, caro y poco fiable. Esto es especialmente

cierto en los mercados emergentes, donde los precios relativos de datos son significativamente más altos. Mediante el diseño para el peor de los

casos se puede garantizar que siempre aportar una experiencia de usuario de alta calidad. Esto también significa asegurarse de que sus

aplicaciones pueden manejar perder (o no encontrar) una conexión de datos.

El emulador de Android le permite controlar la velocidad y la latencia de la conexión de red. Figura 2-21 muestra la velocidad
de conexión de red y la señal de la fuerza del emulador, simulando una conexión EDGE claramente subóptimo.

Experimento sin costura para asegurar la capacidad de respuesta y no importa lo que la velocidad, la latencia y disponibilidad de acceso a la
red. Algunas técnicas incluyen limitar la funcionalidad de la aplicación, o la reducción de las búsquedas de la red a las explosiones en caché,
cuando la conexión de red disponible capacidades de transferencia de datos sólo limitadas.

En el capítulo 7, “Uso de Recursos de Internet”, que aprender a utilizar los recursos de Internet en sus aplicaciones.
42 | CAPITULO 2 Empezando

FIGURA 2-21

La vida de la batería Guardar

Los más útiles las aplicaciones en un dispositivo, el más que dispositivo se utiliza, y el más rápidamente su batería se agote. Combine esto con grandes,

pantallas de mayor resolución y factores de forma más delgadas dispositivo, y la vida de la batería se convierte rápidamente en un problema importante para

los dueños de dispositivos.

No hay manera más eficaz que los usuarios desinstalar la aplicación, que tener que agotar rápidamente la batería. Siempre debe tratar de crear

aplicaciones que limitan su impacto en la vida de la batería. Uno de los factores de influencia más dramáticos de cómo su aplicación afecta a la vida de

la batería es el uso de las transferencias de datos de red-particularmente cuando su aplicación no está en primer plano. Para su aplicación para ser un

buen ciudadano en el dispositivo, se debe considerar cuidadosamente si, y cuando, a elegir para transferir datos. Android ofrece una serie de APIs

para ayudar a minimizar su impacto en la vida de la batería, incluyendo Doze, Aplicación de espera, y el planificador-cada puesto de trabajo de los

cuales está diseñado para ayudar a garantizar que su aplicación se adhiere a las mejores prácticas en la conservación de la vida de la batería cuando

se realizan transferencias de red y que opera en el fondo.

Exploramos estas y otras mejores prácticas de ahorro de batería en el capítulo 11.


Desarrollo para dispositivos móviles e integrados | 43

Teniendo en cuenta el entorno del usuario


Lamentablemente, no se puede asumir que los usuarios van a considerar su solicitud, la característica más importante de su dispositivo.

En el caso de los teléfonos inteligentes, por lo general son, ante todo, un dispositivo de comunicaciones, en segundo lugar, una cámara, en tercer lugar, un
reproductor de música y video, y en cuarto lugar una plataforma de juegos. Las aplicaciones se escriben más probable es que en la quinta categoría de
“cosas útiles”.

Eso no es una cosa mala-they'll estar en buena compañía con otros, incluyendo mapas de Google y el navegador web. Dicho esto, el modelo de
uso de cada usuario será diferente; algunas personas nunca utilizar su dispositivo para escuchar música, algunos dispositivos no son
compatibles con la telefonía, y algunos no incluir cámaras- pero la multitarea principio inherente en un dispositivo tan ubicuo como es
indispensable es una consideración importante para el diseño de usabilidad.

También es importante tener en cuenta cuándo y cómo los usuarios van a utilizar la aplicación. Las personas utilizan sus teléfonos móviles todo
el tiempo, en el tren, caminar por la calle, o incluso durante la conducción. No se puede hacer que las personas utilizan sus teléfonos
apropiadamente, pero puede asegurarse de que sus aplicaciones no distraigan ellos más de lo necesario.

¿Qué significa esto en términos de diseño de software? Asegúrese de que su aplicación:

➤ Es predecible y de buen comportamiento -Hay una línea muy fina entre un momento agradable y una sorpresa desagradable. El

resultado de cualquier interacción del usuario debe ser predecible y reversible, por lo que es fácil para los nuevos usuarios a entender
cómo realizar tareas, y reducir al mínimo cualquier riesgo de la experimentación.

➤ Cambia a la perfección desde el fondo al primer plano -Con la naturaleza multitarea de los dispositivos móviles, lo más probable es que sus

aplicaciones se mueven regularmente dentro y fuera del fondo. Es importante que “cobran vida” de forma rápida y sin problemas. A menos
que los usuarios han cerrado de forma explícita su aplicación, no deben notar una diferencia entre el reinicio y reanudación de ella;
conmutación debe ser transparente, con los usuarios que se muestran el estado de la interfaz de usuario y la aplicación última vez que
vieron.

➤ es educado -Nunca robar el foco o interrumpir la actividad actual de un usuario. Utilice Notificaciones (que se detallan en el Capítulo 11) para

solicitar la atención del usuario, cuando y según proceda, cuando su aplicación no está en el primer plano.

➤ Presenta una interfaz de usuario atractiva e intuitiva -Spend el tiempo y los recursos necesarios para producir una interfaz de usuario que es

tan atractivo como es funcional, y no obligar a los usuarios a interpretar y aprender de nuevo su aplicación cada vez que abren la misma.

Usando su aplicación debe ser simple, fácil, obvio, y delicioso.

➤ es sensible -Responsiveness es una de las consideraciones de diseño más críticos en un dispositivo móvil. Sin duda ha
experimentado la frustración de una pieza “congelada” del software; la multifuncionalidad de los dispositivos móviles hace
esto aún más molesto. Con la posibilidad de retrasos causados ​por las conexiones de datos lento y poco fiable, es
importante que su aplicación siempre permanece sensible.
44 | CAPITULO 2 Empezando

Desarrollar para Android


Además de las directrices generales anteriores, la filosofía de diseño de Android exige que las aplicaciones de alta calidad
diseñarse para:

➤ Actuación

➤ Sensibilidad

➤ Frescura

➤ Seguridad

➤ Uniformidad

➤ Accesibilidad

ser Performant
Una de las claves para escribir código eficiente Android es no llevar más de los supuestos de los entornos de escritorio y de servidor en

dispositivos embebidos. Mucho de lo que ya sabe acerca de cómo escribir código eficiente será aplicable a Android, pero las limitaciones

de los sistemas embebidos y el uso del tiempo de ejecución de Android significa que no se puede dar nada por sentado. Hay dos reglas

básicas para escribir un código eficiente:

➤ No hacer un trabajo que no es necesario hacer.

➤ No asignar memoria si puede evitarlo.

La memoria del sistema es un bien escaso, por lo que deberá tener especial cuidado en utilizar de manera eficiente. Esto significa pensar en cómo
se utiliza la pila y el montón, lo que limita la creación de objetos, y ser consciente de lo variable que alcance afecta el uso de memoria.

El equipo de Android ha publicado una guía específica y detallada sobre cómo escribir código eficiente para Android, por lo que en
lugar de un refrito de aquí, la visita d.android.com/training/articles/perf-tips
. html para sugerencias.

Capacidad de respuesta

En general, de 100 a 200 ms es el umbral en el que los usuarios perciben un retraso o “jank” en una aplicación, por lo que siempre debe esforzarse por

responder a la entrada del usuario dentro de ese marco de tiempo. La gestión de actividades de Android y del administrador de ventanas también

imponen un límite de tiempo a partir del cual se considera que no responde a la aplicación y el usuario se les dará la oportunidad de obligar a cerrar la

aplicación. Si cualquiera de los servicios detecta una aplicación que no responde, se mostrará un “[Aplicación] no responde” cuadro de diálogo (ANR),

como se muestra en la figura 2-22.


Desarrollo para dispositivos móviles e integrados | 45

FIGURA 2-22

Android supervisa dos condiciones para determinar la capacidad de respuesta:

➤ Una aplicación debe responder a ninguna acción del usuario, como por ejemplo una llave de prensa o una pantalla táctil, dentro de los 5

segundos.

➤ Un receptor de radiodifusión debe regresar a su OnReceive manejador dentro de los 10 segundos. El cuadro de diálogo ANR es el último

recurso de la facilidad de uso; la generosa cinco segundos límite es el peor de los casos, no es un objetivo. Puede asegurarse de que su

aplicación no dispara una ANR, y es tan sensible como sea posible, en un número de maneras:

➤ tareas largas tales como la red o de bases de datos las búsquedas, procesamiento de complejos (tales como cal-

culating juego de movimientos), y el archivo de E / S de todos deben ser movidos fuera el hilo principal de interfaz de usuario y se ejecutan de forma

asíncrona.

➤ Mostrar el progreso dentro de la interfaz de usuario si hay tareas de larga duración que suceden en el fondo.

➤ Si la aplicación tiene una fase de configuración inicial que consume tiempo, hacer que la vista principal lo más rápido

como sea posible, indica que la carga está en curso, y llenar la información de forma asíncrona. También podría considerar que muestra
una pantalla de bienvenida, pero en cualquier caso, indican que se está avanzando, para evitar la percepción de los usuarios que la
aplicación se ha congelado.
46 | CAPITULO 2 Empezando

Asegurar que los datos Frescura

Desde una perspectiva de usabilidad, el momento adecuado para actualizar su aplicación es inmediatamente antes de que el usuario lo mira, en la práctica, es

necesario sopesar la frecuencia de actualización en su efecto sobre la duración de la batería y el uso de datos.

En el diseño de su aplicación, es fundamental que se tiene en cuenta la frecuencia con que actualizar sus datos. Es necesario reducir al mínimo el
tiempo que los usuarios están a la espera de actualizaciones o cambios, al tiempo que limita el efecto de estos cambios de fondo en la vida de la
batería. Que se introducen en el programador de tareas para actualizar su aplicación en segundo plano en el capítulo 11.

Desarrollo de aplicaciones seguras


aplicaciones Android tienen acceso a las redes y hardware, se puede distribuir de forma independiente, y están construidas sobre una plataforma
de código abierto que ofrece una comunicación abierta, por lo que no debe sorprender que la seguridad es una consideración importante.

El modelo de seguridad de Android cajas de arena cada aplicación y restringe el acceso a los servicios y funcionalidad al requerir
aplicaciones para declarar los permisos que requieren, y permitiendo a los usuarios aceptan o rechazan esas peticiones.

El marco también incluye implementaciones robustas de la funcionalidad de seguridad, incluyendo la criptografía y seguro IPC,
así como tecnologías como ASLR, NX, ProPolice, safe_iop, OpenBSD dlmalloc, OpenBSD calloc y mmap_min_addr Linux para
mitigar los riesgos asociados a errores de gestión de memoria común.

Esto no le baje el gancho. No sólo es necesario asegurarse de que su aplicación es segura en sí misma, pero también es necesario para
asegurarse de que no se “fuga” de permisos, los datos y el acceso al hardware para comprometer los datos del dispositivo o de usuario. Puede
utilizar varias técnicas para ayudar a mantener la seguridad del dispositivo, y se cubren con más detalle a medida que aprende las tecnologías
involucradas. En particular, se debe hacer lo siguiente:

➤ Sea consciente de la seguridad al almacenar o transmitir datos. Por defecto, los archivos que se crea

en el almacenamiento interno es accesible sólo para su aplicación, pero hay que tener especial cuidado si sus acciones de aplicaciones o archivos

de datos con otras aplicaciones, por ejemplo, a través de servicios compartidos, proveedores de contenido, o Intentos de difusión. Si usted tiene

acceso a los datos del usuario y puede evitar el almacenamiento o la transmisión de la información, no almacenar o transmitir los datos. Tener

especial cuidado para asegurarse de que no está compartiendo o transmitir información sensible, como información de identificación personal

(información personal) o datos de localización.

➤ Siempre realizar la validación de entrada. la validación de entrada insuficiente es uno de los más comunes

los problemas de seguridad que afectan a las aplicaciones, independientemente de la plataforma que se ejecuten. Tenga especial
cuidado al aceptar la entrada a su solicitud de entrada de usuario o de fuentes externas, tales como Internet, Bluetooth, NFC, mensajes
SMS o mensajería instantánea (IM).

➤ Tenga cuidado cuando su aplicación puede exponer el acceso al hardware de nivel inferior a terceros

aplicaciones.

➤ Reducir al mínimo los datos que utiliza su aplicación y qué permisos que requiere.
Desarrollo para dispositivos móviles e integrados | 47

NOTA Usted puede aprender más sobre el modelo de seguridad de Android en el capítulo 20,
“desarrollo avanzado de Android”, y por lo developer.android.com/training/articles/security-tips.html.

Asegurando una experiencia de usuario sin fisuras

La idea de una experiencia de usuario sin fisuras es una importante, aunque algo nebulosa, concepto. ¿Qué entendemos por ¿sin costura? El objetivo
es una experiencia de usuario consistente en que comienzan las aplicaciones, se detienen, y la transición al instante y sin demoras perceptibles o
transiciones discordantes.

La velocidad y la capacidad de respuesta de un dispositivo móvil no deben degradar el más largo que se utiliza. gestión de procesos de Android ayuda
al actuar como un asesino silencioso, matando aplicaciones en segundo plano para liberar recursos según sea necesario. Sabiendo esto, las
aplicaciones siempre deben presentar una interfaz consistente, independientemente de si están siendo renovadas o restablecida.

Para empezar, asegurando que sus actividades están suspendidas adecuadamente cuando no están en el primer plano. incendios Android

controladores de eventos cuando su actividad se pausar y reanudar, por lo que puede pausar cambios de interfaz de usuario y de las actualizaciones

de la red cuando su aplicación no es visible y reanudar tan pronto como es. Persistir datos entre sesiones, y cuando la aplicación no es visible,

suspender las tareas que utilizan ciclos de procesador, ancho de banda, o la vida de la batería.

Cuando su aplicación se lleva de nuevo a la parte delantera, o se reinicia, se debe volver a la perfección a su último estado visible. En lo que a
los usuarios se refiere, cada aplicación debe estar sentado en silencio, listo para ser utilizado, pero fuera de la vista.

Utilizar un enfoque coherente e intuitiva a la usabilidad. Se pueden crear aplicaciones que son revolucionarios y desconocido, pero

incluso éstas debe íntimamente integrada con el entorno Android más amplio. Use un lenguaje de diseño coherente dentro de su

aplicación, idealmente siguiendo los principios de diseño de material discutido en más detalle en el capítulo 12 y en el material.io/guidelines/.

Puede utilizar muchas otras técnicas para garantizar una experiencia de usuario sin fisuras, y se le presentó a algunos de ellos a medida
que descubre más de las posibilidades disponibles en Android en los próximos capítulos.

Accesibilidad proporcionando

Al diseñar y desarrollar sus aplicaciones, es importante no asumir que cada usuario será exactamente igual a ti. Esto tiene implicaciones
para la internacionalización y la facilidad de uso, pero es fundamental para la prestación de apoyo accesibles para los usuarios con
discapacidad que les obligan a interactuar con sus dispositivos Android en diferentes maneras.

Android proporciona las instalaciones para ayudar a estos usuarios navegar por sus dispositivos más fácilmente el uso de texto-a-voz, la retroalimentación háptica, y la rueda

de desplazamiento o de navegación D-pad.

Para proporcionar una buena experiencia de usuario para todos, incluidas las personas con discapacidades visuales o físicas, relacionadas con la
edad, que les impiden utilizar plenamente o ver una pantalla táctil-que pueden aprovechar las funciones de accesibilidad de Android.
48 | CAPITULO 2 Empezando

NOTA Las mejores prácticas para hacer que su aplicación sea accesible se tratan en detalle en el
capítulo 14, “Personalización avanzada de su interfaz de usuario.”

Como beneficio adicional, los mismos pasos que se requieren para ayudar a que sus aplicaciones de pantalla táctil útil para los usuarios con discapacidad también

harán que sus aplicaciones más fáciles de usar en dispositivos de pantalla no táctil, tales como televisores.

Herramientas de desarrollo de Android

El SDK de Android incluye varias herramientas y utilidades para ayudarle a crear, probar y depurar sus proyectos. Exploramos varios de
estos con más detalle a lo largo del resto de este libro, aunque un examen detallado de cada herramienta de desarrollo está fuera de
nuestro alcance. Sin embargo, vale la pena revisar lo que está disponible, y para obtener más detalles, echa un vistazo a la
documentación de Android Studio en
developer.android.com/studio.

Como se mencionó anteriormente, Android Studio convenientemente incorpora todas estas herramientas, incluyendo los siguientes:

➤ El Administrador de dispositivos Android y emulador virtual -La AVD Manager se utiliza para crear y gestionar AVDs, hardware virtual

que aloja un emulador corriendo una versión particular de Android. Cada AVD puede especificar un determinado tamaño de pantalla y
resolución, capacidades de memoria y almacenamiento, y capacidades de hardware disponibles (tales como pantallas táctiles y GPS).
El emulador de Android es una implementación del tiempo de ejecución de Android diseñada para funcionar dentro de una AVD en el
equipo de desarrollo de acogida.

➤ El Administrador de Android SDK -Se utiliza para descargar paquetes SDK incluyendo SDK plataforma Android, bibliotecas de

soporte, y Google Play SDK de servicios.

➤ Profiler Android -Visualize el comportamiento y el rendimiento de la aplicación. El Analizador de Android puede rastrear el uso de

memoria y CPU en tiempo real, así como analizar el tráfico de red.

➤ Hilas -Una herramienta de análisis estático que analiza su aplicación y sus recursos para sugerir mejoras y

optimizaciones.

➤ Gradle -Un sistema de construcción avanzada y kit de herramientas que maneja la compilación, empaquetado y despliegue de sus

aplicaciones.

➤ Vector de Activos Estudio -Genera archivos de mapa de bits para cada densidad de pantalla para apoyar a las versiones anteriores de Android que

no soportan el formato vectorial dibujable Android.

➤ APK Analizador -Proporciona una visión en la composición de sus archivos APK construidas.

Las siguientes herramientas adicionales también están disponibles:

➤ Android Debug Bridge (ADB) aplicación cliente-servidor: un estudio que proporciona un enlace entre el ordenador anfitrión y los

dispositivos Android virtuales y físicos. Se le permite copiar archivos, instalar paquetes de aplicaciones compiladas (. apk), y ejecutar
comandos shell.
Herramientas de desarrollo de Android | 49

➤ logcat utilidad -A utiliza para ver y filtrar la salida del sistema de registro de Android.

➤ Android Packaging Tool Activos (AAPT) -Constructs los archivos del paquete Android distribuibles (. APK).

➤ SQLite3 -Una herramienta de base de datos que se puede utilizar para acceder a los archivos de base de datos SQLite creados y utilizados por Android.

➤ Hprof-conv -Una herramienta que convierte HPROF perfiles de los archivos de salida en un formato estándar para ver en su herramienta de

perfilado preferido.

➤ dx -Converts Java. clase código de bytes en Android. dex código de bytes.

➤ Draw9patch -A práctica utilidad para simplificar la creación de gráficos NinePatch utilizando un editor WYSIWYG.

➤ Mono y mono Runner -Monkey se ejecuta dentro del tiempo de ejecución de Android, la generación de eventos de usuario

pseudoaleatoria y del sistema. Mono Runner proporciona una API para escribir programas para el control de la máquina virtual desde

fuera de su aplicación.

➤ ProGuard -Una herramienta para reducir y ofuscar su código mediante la sustitución de clase, variables y nombres de los métodos alternativas

semánticamente sin sentido. Esto es útil para hacer que su código sea más difícil de realizar ingeniería inversa.

Android Studio
Como desarrollador, el Studio IDE Android es donde usted tendrá que pasar la mayor parte de su tiempo, por lo que vale la pena entender algunos
de sus matices. Las siguientes secciones se presentan algunos consejos para reducir los tiempos de construcción, específicamente a través del
uso de la instantánea de ejecución, así como algunos atajos y funciones avanzadas que puede utilizar al escribir y depurar el código.

Construir la mejora del rendimiento


La forma más sencilla de mejorar el rendimiento de construcción es asegurando que ha asignado suficiente memoria RAM para el proceso de

construcción. Se puede modificar la cantidad de RAM asignada al sistema de acumulación (el Demonio Gradle VM) mediante la edición del gradle.properties

presentar dentro de su proyecto. Para un buen rendimiento, se recomienda que se puede asignar un mínimo de 2 GB, mediante el

org.gradle.jvmargs propiedad:

org.gradle.jvmargs = -Xmx2048m

El valor ideal para cada sistema variará en base a un hardware diferente, por lo que debe experimentar para ver qué funciona mejor para
usted.

Además, si estás en Windows, Defensor protección en tiempo real de Windows podría causar retrasos de construcción. Esto se puede evitar
mediante la adición de la carpeta del proyecto a la lista de exclusiones de Windows Defender.
50 | CAPITULO 2 Empezando

El uso de Instant Run

Instantánea Run es una característica de Android Studio que reduce significativamente la acumulación y desplegar veces por cambios en el código

incrementales durante sus ciclos de codificación, pruebas, y la depuración de la vida. La primera vez que se pulsa Ejecutar o Depurar, el sistema de

construcción de Gradle compilará el código fuente en código de bytes y convertir que a Android. dex archivos. Los que se combinan con el manifiesto y

los recursos de su aplicación en un APK, que se implementa en el dispositivo de destino donde se ha instalado y puesto en marcha la aplicación.

Cuando se habilita la ejecución inmediata, el proceso de construcción inyectará un poco de instrumentación adicional y un servidor de aplicaciones en el archivo

APK de depuración para apoyar Instant Run.

A partir de entonces, una pequeña amarilla icono de rayo está disponible, lo que indica que Instant Run está activo. Cada vez que realice un cambio
instantáneo y pulsa Ejecutar, Android estudio tratará de mejorar la velocidad de construir y desplegar por código y de recursos “intercambio” cambios
directamente en el proceso de aplicación de depuración en funcionamiento.

La naturaleza de las mejoras varía en función de los cambios que realiza de la siguiente manera:

➤ Hot swap cambios en el código -incremental se aplican y se reflejan en la aplicación sin necesidad de reiniciar la aplicación o incluso reiniciar la

actividad actual. Puede ser utilizado para la mayoría de los cambios simples en las implementaciones de métodos.

➤ intercambio en templado -La actividad debe ser reiniciado para que los cambios pueden ser vistos y utilizados. Por lo general se requiere para los

cambios en los recursos.

➤ Intercambiar fría -La aplicación se reinicia (pero aún no se vuelve a instalar). Se requiere para los cambios estructurales tales como la

herencia o firmas de métodos.

Instant Run está activado por defecto, y es controlado por Android de estudio, por lo que sólo iniciar / reiniciar la instancia de depuración desde el
IDE - no iniciar / reiniciar su aplicación desde la línea de comandos o dispositivo.

Consejos para usar Android Studio


Cientos de consejos y trucos pueden hacer que su experiencia de estudio Android más rápido y productivo. La siguiente es una pequeña
muestra de algunos atajos no inmediatamente obvias, pero es muy útil para ayudarle a hacer el recuento de cada pulsación de tecla.

Búsqueda rápida

El atajo más útil para recordar en Android Studio es la búsqueda de acción, provocada pulsando Ctrl + Shift + A (Cmd + Shift + A en MacOS).
Después de pulsar ese acceso directo, puede empezar a escribir palabras clave, y con cualesquiera acciones u opciones disponibles que
contienen esas palabras estarán disponibles para su selección.

Para buscar específicamente para los archivos dentro de un proyecto, puede pulsar Shift dos veces para mostrar la búsqueda de diálogo en todas partes.

Por otra parte, allí donde hay una larga lista de cosas tales como archivos en la jerarquía del proyecto u opciones de menú en un menú grande como Refactor Este

..., simplemente comenzar a escribir y va a empezar a filtrar los resultados.


Herramientas de desarrollo de Android | 51

Utilizando el tabulador para Autocompletar Selecciones

Al pulsar Tab (en lugar de Enter) al seleccionar una opción de autocompletar reemplaza cualquier método y los valores existentes, en vez de
insertar la nueva selección en frente de ella.

Código de sufijo Finalización


Postfix finalización de código le permite transformar un simple, ya mecanografiado, valor o expresión en una más compleja.

Por ejemplo, se puede crear un bucle desde hace más de una variable lista escribiendo. fori después del nombre de la variable, o convertir una
expresión booleana en una instrucción if por postfixing. Si ( o. más). Puede ver todos los sufijos válidos disponibles para un determinado contexto
pulsando Ctrl + J (Cmd + J en MacOS).

Plantillas en directo

Plantillas en directo le permiten usar atajos que están disponibles como opciones de autocompletar para insertar fragmentos a plantillas en el
código.

Docenas de plantillas en directo genéricas y específicas de Android están disponibles, incluyendo una selección de los accesos directos de explotación
forestal - o usted puede crear su propia para simplificar las pautas de mejores prácticas o repetitivo dentro de su propio código. Puede ver las plantillas
existentes en directo (y crear su propia) abriendo la ventana de configuración y navegación al Editor ➪ Plantillas vivo.

El Administrador de dispositivos Android Virtual

El Administrador de dispositivos Android virtual se utiliza para crear y gestionar los dispositivos de hardware virtuales que serán sede de las
instancias del emulador.

AVDs se utilizan para simular las diferentes configuraciones de hardware de los dispositivos físicos. Esto le permite probar la aplicación en una
variedad de plataformas de hardware sin tener que comprar una variedad de teléfonos.

NOTA El SDK de Android no incluye ninguna dispositivos virtuales creados previamente, por lo que tendrá que
crear al menos un dispositivo antes de poder ejecutar sus aplicaciones dentro de un emulador.

Cada dispositivo virtual se configura con un nombre, tipo de dispositivo físico, la imagen del sistema Android, tamaño de pantalla y resolución,
capacidades ABI / CPU, memoria y almacenamiento, y capacidades de hardware incluyendo velocidades de cámara y de red.

Las diferentes configuraciones de hardware y resoluciones de pantalla presentarán pieles de interfaz de usuario alternativas para representar las diferentes

configuraciones de hardware. Esto simula una variedad de tipos de dispositivos incluyendo diferentes teléfonos y tabletas, así como televisores y dispositivos

Android Wear.

El emulador de Android
El emulador se ejecuta dentro de una AVD, y está disponible para probar y depurar sus aplicaciones como una alternativa al uso de un
dispositivo físico.
52 | CAPITULO 2 Empezando

El emulador es una implementación del tiempo de ejecución de Android, por lo que es tan válida una plataforma para ejecutar aplicaciones de Android
como cualquier teléfono Android. Debido a que está desacoplada de ningún hardware especial, es una excelente línea de base a utilizar para probar
las aplicaciones.

conectividad de red completa se proporciona junto con la capacidad de ajustar la velocidad de conexión a Internet y la latencia durante la
depuración de sus aplicaciones. También puede simular realizar y recibir llamadas de voz y mensajes SMS.

Android Studio integra el emulador de modo que se puso en marcha de forma automática dentro de la AVD seleccionado al ejecutar o depurar
sus proyectos.

Una vez en funcionamiento, puede utilizar la barra de herramientas se muestra en la Figura 2-23 para emular presionando la potencia de
hardware y botones de volumen, casa de software, la espalda y los botones recents, girar la pantalla, o tomar capturas de pantalla. Al pulsar el
botón “...” abre los controles extendidos, que también se muestran en la figura 2-23, y que para permitir:

➤ Establecer la ubicación actual del GPS y simular la reproducción de pistas de GPS.

➤ Modificar la conectividad de la red celular simulada, incluyendo fuerza de la señal, la velocidad y

tipo de conexión de datos.

➤ Establecer estado de la batería, el nivel y el estado de carga.

➤ Simular llamadas telefónicas entrantes y mensajes SMS.

➤ Simular el sensor de huellas dactilares.

➤ Proporcionar datos de sensor mock incluyendo los resultados para acelerómetro, temperatura ambiente, y MAG-

sensor de campo nética.

Profiler Android
El emulador que permite ver cómo su aplicación se verá, se comportan e interactúan, pero para ver realmente lo que está sucediendo
bajo la superficie, lo que necesita el Analizador de Android.

El Analizador de Android muestra en tiempo real de datos de perfiles para la CPU, la memoria y la actividad de red relacionada con su aplicación. Puede llevar a

cabo el método basado en muestras trazando el tiempo de su ejecución de código, los vertederos de la captura del montón, las asignaciones de vista de la

memoria, e inspeccionar los detalles de los archivos en la red transmitida. Para abrir el Analizador de Android, haga clic en el icono de Android Profiler en la barra

de herramientas, o acceda a la vista

➪ herramienta de Windows ➪ elemento de menú Android Profiler. Se visualizará la ventana de tiempo compartido, como se muestra en la figura 2-24.

La ventana de perfiles muestra gráficos en tiempo real para la CPU, la memoria y uso de la red, así como una línea de tiempo de eventos que indica

cambios en el estado de actividad, las entradas del usuario, y la rotación de pantalla. Para acceder a las herramientas de perfiles detallados para la CPU,

la memoria, o el uso de la red, haga clic en el gráfico asociado. Dependiendo del recurso que se está perfilado, cada vista de detalle le permitirá realizar

una de las siguientes:

➤ Inspeccionar actividad de la CPU y trazas de método.

➤ Inspeccionar el montón de memoria y asignaciones de Java.

➤ Inspeccionar el tráfico de red entrante y saliente.


Herramientas de desarrollo de Android | 53

FIGURA 2-23

FIGURA 2-24
54 | CAPITULO 2 Empezando

El puente de depuración de Android

El puente de depuración de Android (BAD) es una aplicación de servicio al cliente que le permite conectar con un dispositivo Android
(virtual o real). Se compone de tres componentes:

➤ Un demonio que se ejecuta en el dispositivo o emulador

➤ Un servicio que se ejecuta en el equipo de desarrollo

➤ Las aplicaciones cliente que se comunican con el demonio a través del servicio

Como un conducto de comunicación entre el hardware de desarrollo y el dispositivo Android / emulador, el BAD permite instalar aplicaciones,
empujar y tirar de archivos, y ejecutar comandos de shell en el dispositivo de destino. El uso de la cáscara del dispositivo, puede cambiar la
configuración de registro y consulta o modificar bases de datos SQLite disponibles en el dispositivo.

Android Studio automatiza y simplifica mucho de su interacción habitual con el BAD, incluyendo instalación de la aplicación y
actualización, registro de archivo, y la depuración.

NOTA Para obtener más información sobre lo que puede hacer con el BAD, echa un vistazo a la
documentación en developer.android.com/studio/command-line/adb.html.

APK Analizador
El APK analizador que permite comprender mejor la composición de los archivos APK, proporcionando una interfaz para:

➤ Ver el tamaño absoluto y relativo de los archivos almacenados en el archivo APK, incluyendo. DEX y

archivos de recursos.

➤ Ver las versiones finales de. DEX los archivos almacenados en el archivo APK.

➤ Ver la versión final de la AndroidManifest.xml expediente.

➤ Realizar una comparación lado a lado de dos APK.

Para analizar el archivo APK, puede arrastrar y soltar un archivo APK directamente en la ventana del editor de Android Studio, vaya a un APK en la
construcción ➪ salida ➪ aPKs directorio utilizando el punto de vista del proyecto y haga doble clic en el archivo APK deseada, o haga clic en el Build ➪ Analizar
elemento de menú APK y seleccione un archivo APK.

La ventana Analizador APK, se muestra en la Figura 2-25, muestra cada archivo y carpeta almacenada en el archivo APK, y le permite navegar

dentro de cada carpeta o para visualizar detalles adicionales sobre cada archivo. La columna de tamaño de archivo sin comprimir representa el

tamaño de cada entidad, mientras que el Tamaño de la descarga indica el tamaño comprimido estimado de la entidad cuando se entrega por parte

de Google Play. Al seleccionar el manifiesto de aplicación, se puede ver el formulario XML del archivo de manifiesto envasado final dentro de su

APK.
Herramientas de desarrollo de Android | 55

Para más detalles sobre cómo utilizar el analizador APK, consulte developer.android.com/studio/ acumulación / apk-analyzer.html.

FIGURA 2-25

La herramienta de pelusa

Android Studio proporciona una herramienta de análisis de código estático llamado pelusa, lo que ayuda a identificar y corregir problemas de calidad

estructural dentro de su código, sin tener que ejecutar la aplicación o escribir esas pruebas específicas.

Las inspecciones de pelusa e IDE configurados ejecutan automáticamente cada vez que construye su aplicación, el control de su código

fuente y archivos de recursos para los posibles errores y mejoras de optimización, incluyendo corrección, seguridad, rendimiento, facilidad

de uso, la accesibilidad y la internacionalización. Los problemas potenciales se destacan dentro del IDE con una descripción, nivel de

gravedad, y en lo posible un remedio sugerido.

El uso de pelusa para identificar y corregir posibles problemas estructurales dentro de su código puede mejorar dramáticamente la legibilidad,
fiabilidad y eficiencia de su código. Es la mejor práctica para asegurar que todas las advertencias Lint se tratan como parte de su proceso de
desarrollo.

Mono, mono Runner, y Espresso Prueba UI


las pruebas de interfaz de usuario ayuda a garantizar que los usuarios no se encuentran con resultados inesperados al interactuar con su aplicación. Android Studio

incluye una serie de herramientas para ayudarle en la creación de pruebas de interacción interfaz de usuario / usuario.

Mono funciona desde dentro de la cáscara del BAD, el envío de una corriente de pseudoaleatoria, pero repetible, y el sistema de eventos de interfaz de

usuario a la aplicación. Es particularmente útil para el estrés probar las aplicaciones para investigar casos extremos que no podría haber anticipado a través

del uso no convencional de la interfaz de usuario. Alternativamente, mono Runner es una API de script Python que le permite enviar comandos de interfaz de

usuario específica para controlar un emulador o dispositivo desde fuera de la aplicación. Es extremadamente útil para realizar la interfaz de usuario, y

pruebas de la unidad funcional de una manera predecible y repetible.


56 | CAPITULO 2 Empezando

El marco de pruebas Espresso, siempre a través de la biblioteca de soporte Prueba de Android, ofrece APIs para escribir pruebas de interfaz de usuario para

simular las interacciones del usuario específicos para una aplicación específica. Espresso detecta cuando el hilo principal está inactivo, y se ejecuta sus

comandos de prueba en el momento apropiado para mejorar la fiabilidad del test. Esta capacidad también lo libera de la necesidad de añadir soluciones de

sincronización, como un período de sueño, en su código de prueba.

Usted puede aprender más sobre las pruebas en Espresso espresso developer.android.com/training/testing/.

Gradle
Gradle es un sistema de construcción avanzada y kit de herramientas, integrado en Android de estudio, lo que hace posible que usted deba realizar

configuraciones de generación personalizada sin necesidad de modificar los archivos fuente de su aplicación.

El uso de Gradle como sistema de construcción de Android está pensado para que sea más fácil de configurar, ampliar y personalizar el proceso de

construcción, simplificar el código y reutilización de recursos, y para crear más fácilmente múltiples variantes de construcción de una aplicación.

Gradle es plug-in-basa, por lo que la integración con Android Studio se gestiona a través del plugin de Android para Gradle, que trabaja con el kit de

herramientas de construcción para proporcionar una interfaz de usuario en Android Estudio de los procesos y parámetros configurables que son

específicos de la construcción y prueba de aplicaciones de Android. Gradle en sí, y el plugin de Android, están integrados con, pero en última

instancia independiente de Android Studio. Como resultado, usted puede construir sus aplicaciones de Android desde dentro Android de estudio, la

línea de comandos en la máquina o en máquinas en Android Studio no está instalado (por ejemplo, servidores de integración continua). La salida de

la construcción es el mismo si usted está construyendo un proyecto desde la línea de comandos, en una máquina remota, o el uso de Android Studio.

Dentro de este libro, vamos a construir nuestras aplicaciones en Android Studio usando el plugin de Android para Gradle para gestionar nuestras
interacciones con el sistema de construcción. La cobertura total de Gradle, construcción personalizada y Gradle scripts de creación está más allá del
alcance de este libro, pero usted puede aprender más detalles en
developer.android.com/studio/build/.

NOTA Debido Gradle y el plugin para Android Gradle son independientes de Android de estudio, se le pedirá para
actualizar sus herramientas de construcción por separado de Android de estudio, de forma similar a cómo se realizan
las actualizaciones de SDK.
3
Aplicaciones y actividades y
fragmentos, ¡por Dios!
Contenido de este capítulo?

➤ Presentación de la aplicación para Android

➤ Entender el ciclo de vida de las aplicaciones de Android

➤ Reconociendo la prioridad de la solicitud

➤ La creación de nuevas actividades

➤ La comprensión de las transiciones de estado de una actividad y ciclo de vida

➤ En respuesta a la presión de la memoria del sistema

➤ Creación y uso de fragmentos

DESCARGAS WROX.COM código de este Capítulo

Las descargas de código de este capítulo se encuentran en www.wrox.com. El código de este capítulo se divide en los siguientes
ejemplos importantes:

➤ Snippets_ch3.zip

➤ Earthquake_ch3.zip

Android ® profesional, Cuarta edición. Reto Meier y Ian Lago. © 2018 John Wiley & Sons, Inc.
Publicado 2018 por John Wiley & Sons, Inc.
58 | CAPÍTULO 3 Aplicaciones y actividades y fragmentos, oh my!

APLICACIONES, actividades y FRAGMENTOS


aplicaciones Android (o simplemente “aplicaciones”) son programas de software que se instalan y se ejecutan de forma nativa en los dispositivos
Android. Para escribir aplicaciones de alta calidad, es importante comprender los componentes que consisten en, y cómo estos componentes
trabajan juntos. En este capítulo se presenta cada uno de los componentes de la aplicación, con especial atención a las actividades y los
fragmentos de los componentes visuales de su aplicación.

En el capítulo 2, “Cómo empezar”, que ha aprendido que cada aplicación Android se ejecuta en un proceso separado, en su propia
instancia del tiempo de ejecución de Android. En este capítulo, aprenderá cómo el tiempo de ejecución de Android gestiona la aplicación y
el impacto que esto tiene sobre el ciclo de vida de la aplicación. Estado de una aplicación determina su prioridad que, a su vez, afecta a la
posibilidad de que sea terminada cuando el sistema requiere más recursos. También se introducen a la actividad y Fragmento estados,
transiciones de estado y controladores de eventos. los Actividad clase constituye la base de todas las pantallas de la interfaz de usuario (UI).
Vas a aprender cómo crear actividades y obtener una comprensión de sus ciclos de vida y cómo afectan a la duración de la aplicación y la
prioridad.

La gama de tamaños de pantalla y resoluciones de pantalla de los dispositivos en los que se utilizará su aplicación se ha ampliado con la gama
de dispositivos Android ya está disponible. El Fragmento API proporciona soporte para la creación de diseños dinámicos que se pueden optimizar
para todos los dispositivos, incluyendo tabletas y teléfonos inteligentes.

Vas a aprender cómo utilizar fragmentos de encapsular estado dentro de sus componentes de interfaz de usuario, y para crear diseños que escalan y adaptarse

para dar cabida a una variedad de tipos de dispositivos, tamaños de pantalla y resoluciones.

Los componentes de una aplicación de Android


aplicaciones Android consisten en componentes débilmente acoplados, unidos por un manifiesto de aplicación que describe cada componente
y cómo interactúan. Los siguientes componentes comprenden los bloques de construcción para todas las aplicaciones de Android:

➤ Ocupaciones -Su capa de presentación de solicitud. La interfaz de usuario de la aplicación se construye alrededor de una o más extensiones de la Actividad

clase. Actividades utilizan fragmentos y vistas a establecer y visualizar la información, y para responder a las acciones del usuario. En

comparación con el desarrollo de escritorio, las actividades son equivalentes a las formas. A aprender más acerca de las actividades más

adelante en este capítulo.

➤ Servicios -Servicio de componentes se ejecutan sin una interfaz de usuario, la actualización de las fuentes de datos, lo que provocó Notificaciones

y difusión Intentos. Están acostumbrados a realizar tareas de marcha larga, o aquellos que no requieren la interacción del usuario (por

ejemplo, tareas que deben continuar incluso cuando las actividades de su aplicación no están activos o visible). A aprender más sobre cómo

crear y utilizar los servicios en el Capítulo 11, “Trabajo en los antecedentes.”

➤ intentos -Un potente marco entre aplicaciones de paso de mensajes; Intenciones son utilizados ampliamente en Android. Intentos

que va a utilizar para iniciar y detener actividades y servicios, para transmitir mensajes o para una actividad específica, Servicio
o de difusión de todo el sistema receptor-o
El ciclo de vida de aplicaciones Android, Estados Prioridad y Proceso | 59

a la solicitud puede realizar una acción en una pieza particular de datos. Explícitas, implícitas, y las intenciones de difusión se analizan
con más detalle en el capítulo 6, “Propósitos y receptores de radiodifusión”.

➤ los receptores de radiodifusión -Broadcast Receptores (o simplemente “receptores”) se utilizan para recibir Intentos de transmisión, lo que permite su

aplicación para escuchar Intentos que coinciden con los criterios especificados. Los receptores de radiodifusión iniciar su aplicación a reaccionar ante

cualquier Intención recibida, que las hace perfectas para la creación de aplicaciones orientadas a eventos. Los receptores de radiodifusión están

cubiertos junto Intentos en el Capítulo 6.

➤ Proveedores de contenido Proveedores -Contenido son el medio preferido para compartir datos a través de los límites de aplicación. Puede

configurar proveedores de contenido de la aplicación para permitir el acceso desde otras aplicaciones, y se puede acceder a los proveedores

de contenidos expuestos por otros. dispositivos Android incluyen varios proveedores de contenido nativos que exponen las bases de datos

útiles, tales como el almacenamiento de medios y contactos. A aprender cómo crear y utilizar proveedores de contenido en el Capítulo 10,

“proveedores de contenido y de búsqueda.”

➤ Notificaciones -Notifications le permiten alertar a los usuarios a los eventos de aplicación sin robar enfoque o interrumpir su actividad

actual. Son la técnica preferida para conseguir la atención de un usuario cuando su aplicación no es visible o activo, normalmente
provocada desde dentro de un servicio o un receptor de difusión. Por ejemplo, cuando un dispositivo recibe un mensaje de texto o
un correo electrónico, la mensajería y las aplicaciones de Gmail utilizan notificaciones para avisarle. Puede desencadenar estas
notificaciones desde sus aplicaciones, como se discutió en el Capítulo 11.

Desacoplando las dependencias entre los componentes de la aplicación, se puede compartir y utilizar los proveedores de contenidos, servicios
individuales, e incluso las actividades con otras aplicaciones, tanto para su propia y de terceras partes.

El androide APLICACIÓN DEL CICLO DE VIDA, PRIORIDAD, Y PROCESO


UNIDOS

A diferencia de muchas plataformas de aplicaciones tradicionales, las aplicaciones de Android tienen un control limitado sobre sus propios ciclos de vida. En su

lugar, los componentes de aplicación deben escuchar los cambios en el estado de la aplicación y reaccionar en consecuencia, teniendo especial cuidado para estar

preparado para la terminación prematura. Por defecto, cada aplicación Android se ejecuta en su propio proceso, cada uno de los cuales se está ejecutando una

instancia independiente del tiempo de ejecución de Android (ART). La memoria y la gestión del proceso es manejado exclusivamente por el tiempo de ejecución.

NOTA Puede forzar los componentes de aplicaciones dentro de la misma aplicación se ejecute en diferentes
procesos o tener múltiples aplicaciones comparten el mismo proceso mediante el Android: Proceso atribuir en los
nodos componente afectado dentro del manifiesto.
60 | CAPÍTULO 3 Aplicaciones y actividades y fragmentos, oh my!

Android administra de forma agresiva sus recursos, haciendo lo que sea necesario para garantizar una experiencia de usuario fluida y estable. En

la práctica, eso significa que los procesos (y por tanto aplicaciones) serán asesinados, en algunos casos, sin previo aviso, para liberar recursos si

las aplicaciones de mayor prioridad que requieren. El orden en que los procesos estén cerrados para reclamar recursos está determinada por la

prioridad de sus aplicaciones alojadas. La prioridad de una solicitud es igual a la de su componente de mayor prioridad. Si dos aplicaciones tienen

la misma prioridad, el proceso que ha estado en que la prioridad más larga que normalmente serán matados por primera vez. la prioridad del

proceso también se ve afectada por las dependencias entre procesos; si una aplicación tiene una dependencia en un servicio o proveedor de

contenido suministrado por una segunda aplicación, la aplicación secundaria se asigna al menos una prioridad tan alta como la aplicación que

soporta. Es importante estructurar su aplicación para asegurarse de que su prioridad es apropiado para el trabajo que está haciendo. Si no lo hace,

su solicitud podría ser matado mientras está en el medio de algo importante, o podría permanecer funcionando de manera segura cuando se pudo

terminar de liberar recursos y mantener una experiencia de usuario sin problemas.

Figura 3-1 muestra el árbol de prioridad se utiliza para determinar el orden de cierre de la aplicación.

1. Proceso Activo prioridad crítica

2. Proceso Visible Alta prioridad

3. Iniciado servicio en segundo plano Prioridad media

Proceso 4. Antecedentes Baja prioridad

FIGURA 3-1

La siguiente lista detalla cada uno de los estados de aplicación mostrados en la Figura 3-1, explicando cómo el estado está determinado por
los componentes de la aplicación de los cuales comprende:

➤ procesos activos (máxima prioridad) procesos (primer plano) -ACTIVE tienen componentes de la aplicación que el usuario está

interactuando con. Estos son los procesos de Android trata de mantener funcionando sin problemas y responsable por la recuperación
de los recursos de otras aplicaciones. en general, hay muy pocos de estos procesos.

procesos activos incluyen uno o más de los siguientes componentes:

➤ Las actividades en un estado activo, es decir, aquellos en el primer plano respondiendo al usuario

eventos. A explorar estados de actividad con mayor detalle más adelante en este capítulo.

➤ Los receptores de radiodifusión ejecución OnReceive controladores de eventos tal como se describe en el Capítulo 6.

➤ servicios de ejecución onStart, onCreate, o OnDestroy controladores de eventos como se describe en

Capítulo 11.
Una mirada más cercana a Actividades Android | 61

➤ procesos visibles (prioridad alta) procesos -Visible pero inactivos son aquellos que acojan actividades de “visibles” o servicios de

primer plano. Como su nombre indica, Actividades visibles son visibles, pero que no están en el primer plano o en respuesta a la
entrada del usuario. Esto sucede cuando una actividad está oscurecida sólo parcialmente (por una pantalla no completa o Actividad
transparente), o en la ventana no activa en un entorno multi-ventana. En general, existen muy pocos procesos visibles, y los
matarán sólo en circunstancias extremas para permitir procesos activos para continuar. Dado que Android

6.0 malvavisco (API nivel 23), Servicios de ejecución que se han marcado para funcionar en el primer plano tiene una prioridad
ligeramente inferior a los procesos activos, por lo que es posible, aunque poco probable, para un servicio de primer plano a matar
para permitir una actividad activa con la memoria significativa requisitos para continuar funcionando.

➤ procesos de fondo empezó de servicio (prioridad media) -Procesos servicios de alojamiento de fondo que se han iniciado. Debido a

que estos servicios no interactúan directamente con el usuario, que reciben una prioridad ligeramente inferior Actividades visibles o
servicios de primer plano. A aprender más acerca de los servicios en el Capítulo 11.

➤ procesos en segundo plano (prioridad baja) -Procesos de alojamiento actividades que no son visibles y que no tienen ninguna servicios

que se ejecutan. Cada vez que se pasa de una aplicación pulsando la tecla de inicio, o utilizar el selector de “aplicaciones recientes”,
la aplicación activa anterior pasa a un segundo plano. Generalmente habrá un gran número de aplicaciones de fondo que Android va a
matar usando una vista por última vez primer muerto de patrón, dando una cierta consideración a priorizar las aplicaciones matando
consume más memoria, con el fin de obtener recursos para procesos en primer plano.

PRESENTACIÓN DE LA SOLICITUD DE CLASE ANDROID

de su aplicación Solicitud objeto permanece instanciado siempre que su aplicación es running-a diferencia de actividades, la
aplicación no se reinicia, como resultado de cambios de configuración. la extensión de la Solicitud clase con su propia aplicación le
permite responder a eventos de nivel de aplicación transmitidos por el tiempo de ejecución de Android (como condiciones de poca
memoria.) Cuando su Solicitud aplicación se ha registrado en el manifiesto, se crea una instancia cuando se crea el proceso de
solicitud. Como resultado, si decide crear una costumbre Solicitud implementación de la clase, es por naturaleza un producto único y
debe ser implementado como tal.

DE CERCA EN ACTIVIDADES ANDROIDE


Cada actividad representa una pantalla que una aplicación puede presentar a sus usuarios. Cuanto más complicada sea la aplicación, más
pantallas a las que es probable que necesite.

Típicamente, esto incluye, al menos, una “actividad principal”, la principal interfaz a pantalla que maneja la funcionalidad de la interfaz de usuario
principal de su aplicación. Esta interfaz primaria está generalmente soportado por un conjunto de actividades secundarias. Para moverse entre las
pantallas, se inicia una nueva actividad (o regrese de uno).
62 | CAPÍTULO 3 Aplicaciones y actividades y fragmentos, oh my!

Creación de Actividades

Para crear una nueva actividad, ampliar el Actividad clase o una de sus subclases (más comúnmente la
AppCompatActivity, como se describe en la siguiente sección). Dentro de su nueva clase debe asignar una interfaz de usuario e implementar su

funcionalidad. Listado 3-1 muestra el código esqueleto básico para un nuevo Actividad.

LISTADO 3-1: código esqueleto de la actividad

com.professionalandroid.apps.helloworld paquete;

android.app.Activity importación;
android.os.Bundle importación;

MyActivity clase pública se extiende Actividad {

/** Se llama cuando se crea por primera vez la actividad. * / @ Override

public void onCreate (Bundle savedInstanceState) {


super.onCreate (savedInstanceState); }}

La base Actividad clase presenta una pantalla vacía que encapsula el manejo de visualización de la ventana. Un vacío Actividad No es
particularmente útil, por lo que la primera cosa que usted querrá hacer es crear la interfaz de usuario utilizando fragmentos, diseños y Vistas.

Las vistas son los widgets / controles que muestran los datos y proporcionar la interacción del usuario de interfaz de usuario. Android proporciona varias clases de

diseño, llamados Ver grupos, que puede contener varias vistas para ayudarle a la disposición de su interfaz de usuario. Fragmentos-discutidos más adelante en este

capítulo también-están disponibles para encapsular los segmentos de la interfaz de usuario, por lo que es sencillo para crear interfaces dinámicas que se pueden

reorganizar para optimizar sus diseños para diferentes tamaños de pantalla y orientaciones.

NOTA Capítulo 5 discute Vistas, Ver grupos y diseños en detalle, el examen de lo que está disponible,
cómo usarlos, y cómo crear su propio.

Para asignar una interfaz de usuario para una actividad, llamar setContentView desde el onCreate método. En el siguiente fragmento, una instancia de una Vista de texto se utiliza

como interfaz de usuario de la Actividad:

@Anular
public void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
TextView Textview = new TextView (this); setContentView
(TextView);
}
Una mirada más cercana a Actividades Android | 63

Hay una buena probabilidad de que desee utilizar un diseño de interfaz de usuario un poco más compleja. Usted puede crear un diseño de código mediante
el diseño Ver grupos, o puede utilizar la convención estándar de Android de pasar un identificador de recurso para un diseño definido en un recurso externo,
como se muestra en el siguiente fragmento:

@Anular
public void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.main);
}

Para utilizar una actividad en su aplicación, es necesario registrarlo en el manifiesto. Añadir un nuevo actividad
etiqueta dentro de la solicitud nodo del manifiesto; la actividad etiqueta incluye atributos para metadatos, como la etiqueta, icono,
permisos necesarios, y los temas utilizados por el Actividad.

<Actividad android: label = "@ string / nombre_apl"


android: name = "MyActivity">
</ Actividad>

Una actividad sin la correspondiente actividad etiqueta no puede ser utilizado, un intento de arranque dará lugar a una excepción en tiempo de

ejecución: En las dos actividad etiquetar puede agregar intención de filtro nodos que especifican los intentos que se pueden utilizar para iniciar su

actividad. Cada filtro Intención define una o más acciones y categorías que su

Actividad apoya. Las intenciones y la intención filtros se tratan en profundidad en el capítulo 6, pero vale la pena señalar que para una Actividad a

estar disponible desde el lanzador de aplicaciones, debe incluir un filtro de Intención para la escucha PRINCIPAL la acción y la LANZACOHETES categoría,
como se destaca en el Listado 3-2.

LISTADO 3-2: Definición principal actividad de las aplicaciones

<Actividad android: label = "@ string / nombre_apl"


android: name = "MyActivity">
<Intención de filtro>
<Acción android: name = "android.intent.action.MAIN" /> <categoría android: name =
"android.intent.category.LAUNCHER" /> </ intención de filtro>

</ Actividad>

Utilizando el AppCompatActivity
Como se mencionó en el capítulo 2, la AppCompatActivity clase es una Actividad subclase disponible en la biblioteca de soporte Android.
Proporciona compatibilidad en curso, hacia atrás para las características añadidas a la
Actividad clase en cada nueva versión de la plataforma. Como tal, se considera la mejor práctica para usar el AppCompatActivity con

preferencia a la Actividad
clase, y vamos a seguir haciéndolo a lo largo de este libro, que generalmente se refiere a las clases que se extienden
AppCompatActivity Como las actividades.

Listado 3-3 actualiza el código del listado 3-1 muestra el esqueleto de código para una nueva actividad que se extiende AppCompatActivity.
64 | CAPÍTULO 3 Aplicaciones y actividades y fragmentos, oh my!

LISTADO 3-3: código esqueleto AppCompatActivity Actividad

com.professionalandroid.apps.helloworld paquete;

android.support.v7.app.AppCompatActivity importación;
android.os.Bundle importación;

MyActivity clase pública se extiende AppCompatActivity {

/** Se llama cuando se crea por primera vez la actividad. * / @ Override

public void onCreate (Bundle savedInstanceState) {


super.onCreate (savedInstanceState); }}

El ciclo de actividad de la vida

Un buen conocimiento del ciclo de vida de actividad es vital para asegurar que su aplicación proporciona una experiencia de usuario sin
fisuras y gestiona adecuadamente sus recursos.

Como se explicó anteriormente, las aplicaciones de Android no controlan sus propias vidas proceso; el tiempo de ejecución de Android
gestiona el proceso de cada aplicación, y por extensión la de cada actividad dentro de ella. Aunque el tiempo de ejecución se encarga de la
terminación y la gestión del proceso de una actividad, el estado de la actividad ayuda a determinar la prioridad de su aplicación principal. El
orden de aplicación, a su vez, influye en la probabilidad de que el tiempo de ejecución terminará y las actividades que se ejecutan dentro de
él.

Actividad Pilas y la lista de los países menos usados ​recientemente (LRU)

El estado de cada actividad se determina por su posición en la pila de actividad (o “stack”), último en entrar, primero en salir colección de
todas las actividades que se están ejecutando. Cuando se inicia una nueva actividad, que se activa y se mueve a la parte superior de la pila.
Si el usuario navega hacia atrás utilizando el botón Atrás o la actividad de primer plano es de otro modo cerrado, la siguiente actividad abajo
en la pila se mueve hacia arriba y se convierte en activo. Figura 3-2 ilustra este proceso.

Como se ha descrito anteriormente en este capítulo, la prioridad de una solicitud está influenciada por su actividad de más alta prioridad.

Cuando el administrador de memoria Android es decidir qué aplicación para terminar de liberar recursos, utiliza esta pila de actividad para

determinar la prioridad de las solicitudes. Cuando ninguna de las actividades de una aplicación son visibles, la propia aplicación se mueve a la

lista utilizada leastrecently (LRU), que se utiliza para determinar el orden en que se dará por terminado aplicaciones para liberar recursos como

se describe anteriormente.
Una mirada más cercana a Actividades Android | sesenta y cinco

Nueva actividad Actividad activo


Remoto

Nueva actividad
Empezado

anterior activo Actividad cerrada


Actividad

botón empujado o

...
liberar recursos Volver

Eliminado para

Anteriormente activo

Actividad Pila Actividades

FIGURA 3-2

actividad Unidos
A lo largo del ciclo de vida de una aplicación, sus actividades se mueven dentro y fuera de la pila de actividad, como se muestra en la Figura 3-2. Mientras lo

hacen, hacen la transición a través de cuatro estados posibles:

➤ Activo -Cuando una actividad es en la parte superior de la pila es lo visible centrado Actividad,, primer plano que está recibiendo la

entrada del usuario. Android intentará mantenerlo vivo a toda costa, matando a las aplicaciones que poseen actividades más
abajo en la pila según sea necesario, para garantizar esta actividad tiene los recursos que necesita. Cuando se activa otra
actividad, ésta se detendrá y cuando ya no es visible, se detuvo, como se describe en los siguientes puntos.

➤ En pausa -En algunos casos, su actividad será visible pero no tendrá el foco; en este punto se detuvo. Este estado también puede ser

alcanzado en la que su solicitud está siendo utilizado en un entorno donde múltiples ventanas múltiples aplicaciones pueden ser
visibles, pero sólo la actividad con la que el usuario interactúa última se considera activo. Del mismo modo, si su actividad tiene una
actividad transparente o de pantalla completa no activa frente a ella, permanecerá en un estado de pausa. Cuando está en pausa, una
actividad es tratado como si fuera activo; Sin embargo, no recibe eventos de entrada de usuario. En casos extremos Android va a
matar a una actividad de pausa para recuperar recursos para la actividad activo. Cuando una actividad se vuelve totalmente
oscurecido, se detiene; Actividades toda transición a través del estado de pausa antes de ser detenido.
66 | CAPÍTULO 3 Aplicaciones y actividades y fragmentos, oh my!

➤ Detenido -Cuando una actividad que no es visible, “paradas” La actividad permanecerá en la memoria, que conserva toda la información de estado; Sin

embargo, ahora es un candidato probable para la terminación cuando el sistema requiere memoria. Cuando una actividad se encuentra en un estado

detenido, es importante guardar los datos y el estado de la interfaz de usuario actual, y para detener cualquier operación que no son críticas. Una vez

que una actividad ha salido o cerrado, se convierte en inactivo.

➤ Inactivo -Después de una actividad se ha matado, así como antes de que sea puesto en marcha, que es inactivo. Actividades inactivos se

han retirado de la pila de actividad y que sea necesario reiniciar antes de que puedan ser visualizados y utilizados.

Las transiciones de estado ocurrir a través de las acciones del usuario y del sistema, es decir, su aplicación no tiene control sobre cuando se
producen. Del mismo modo, cierre de la aplicación es manejada por el administrador de memoria de Android, que se iniciará mediante el cierre de
las aplicaciones que contienen Actividades inactivos, seguidos por los que se detuvieron. En casos extremos, eliminará los que se detuvo.

NOTA Para garantizar una experiencia de usuario sin fisuras, las transiciones entre estados deben ser invisibles para el usuario.
No debería haber ninguna diferencia en una Actividad pasar de un pausas, bloqueos, o estado inactivo de nuevo al activo, por lo
que es importante ahorrar todo el estado de interfaz de usuario y persistir todos los datos cuando se detiene una actividad.

Es la mejor práctica para llevar a cabo cualquier operación de persistencia de estado que consumen mucho tiempo (como
transacciones de bases de datos o las transferencias de red) cuando las transiciones de actividad para el estado detenido
(dentro del onStop controlador, como se describe más adelante en este capítulo), en lugar de durante la transición al estado de
pausa (a menos de onPause).

Las actividades pueden transición entre estados activos y detenidos con frecuencia y rapidez, particularmente cuando
se utiliza en un entorno multi-ventana, de modo que es importante que esta transición ejecutar lo más rápido posible.
Una vez que una actividad se convierte en activo, se debe restaurar los valores guardados.

Del mismo modo, además de los cambios en la prioridad de la actividad, las transiciones entre el activo, en pausa, y los
estados dejado de tener poco impacto directo en la propia actividad. Es hasta usted para usar estas señales para hacer una
pausa y detener sus actividades en consecuencia, y para estar preparado para la terminación en cualquier momento.

Entender la actividad Lifetimes


Para asegurar que las actividades puedan reaccionar a los cambios de estado, Android ofrece una serie de controladores de eventos que se disparó como

una actividad transiciones a través de sus cursos de la vida plena y visible, y activos. Figura 3-3 resume estos tiempos de vida en términos de los estados de

actividad descritos en la sección anterior. Dentro de vida completo de una actividad, entre la creación y la destrucción, que pasa a través de una o más

iteraciones de los cursos de la vida activa y visible. Cada transición activa los controladores de procedimiento descritas anteriormente. Las siguientes

secciones proporcionan un vistazo más de cerca a cada uno de estos cursos de la vida y los acontecimientos que las soporte.
Una mirada más cercana a Actividades Android | 67

puede ser
delicado

OnDestroy actividad

Actividad. En Actividad.
Actividad. resumen Actividad. onPause
Actividad. onSaveInstanceState Actividad.
onRestoreInstanceState Si el sistema
Actividad. onStart onStop Actividad.
terminado Actividad Si la actividad de terminación del sistema
onCreate
Actividad.
onRestart

Curso de la vida activa de

por vida visible de por

vida completa

FIGURA 3-3

El curso de la vida completa

El tiempo de vida completo de su actividad se produce entre la primera llamada a onCreate y cuando es destruido. No es raro que los
procesos de una actividad para ser terminado sin el correspondiente OnDestroy
manejador que se llama. Utilizar el onCreate Método para inicializar su actividad: inflar la interfaz de usuario, obtener referencias a

fragmentos, asignar referencias a variables de clase, enlazar datos a los controles, e iniciar los servicios. Si la actividad se terminó

inesperadamente por el tiempo de ejecución, la onCreate se pasa método una

Haz Objeto que contiene el estado guardado en la última llamada a onSaveInstanceState. Debe utilizar este Haz para restaurar la
interfaz de usuario a su estado anterior, ya sea dentro del onCreate método o
onRestoreInstanceState.

Anular OnDestroy a limpiar cualquier recurso creados en onCreate, y asegurar que todas las conexiones externas, como la red de bases
de datos o enlaces, están cerradas.

En el marco de las directrices de Android para escribir código eficiente, se recomienda que evite la creación de objetos corto plazo repetida.
La rápida creación y destrucción de objetos obliga a la recolección de basura adicional, un proceso que puede tener un impacto negativo
directo sobre la experiencia del usuario. Si su actividad crea el mismo conjunto de objetos con regularidad, considere la creación de ellos en el onCreate
método, como se le llama sólo una vez durante la vida de la Actividad.

El curso de la vida visible

tiempos de vida visibles de una actividad están delimitadas entre las llamadas a onStart y onStop. Entre estas llamadas a su actividad será visible
para el usuario, aunque puede no tener el foco y puede ser parcialmente oscurecido. Las actividades son propensos a pasar por varias vidas
visibles durante toda su vida útil, ya que se mueven entre el primer plano y el fondo. Dado que Android 3.0 Honeycomb (API nivel 11), se puede
suponer con seguridad onStop será llamado antes de que termine el proceso de solicitud. los onStop método debe utilizarse para hacer una pausa o
detener animaciones, hilos, oyentes de sensores, las búsquedas de GPS, temporizadores, servicios, u otros procesos que se utilizan
exclusivamente para actualizar la interfaz de usuario. Hay poco valor en el consumo de recursos (como la memoria, los ciclos de CPU, o ancho
de banda de red) para actualizar la
68 | CAPÍTULO 3 Aplicaciones y actividades y fragmentos, oh my!

La interfaz de usuario cuando no es visible. Utilizar el onStart método para reanudar o reiniciar estos procesos cuando la interfaz de usuario es visible de nuevo.

los onRestart método se llama inmediatamente antes de todo pero la primera llamada a onStart. Utilizarlo para poner en práctica un proceso especial que quiere que

se haga sólo cuando la actividad se reinicia dentro de todo su tiempo de vida. los onStart / onStop métodos también deben ser utilizados para registrar y eliminar

receptores de radiodifusión utiliza exclusivamente para actualizar la interfaz de usuario.

NOTA A aprender más acerca del uso de los receptores de radiodifusión en el Capítulo 6.

El curso de la vida activa

El tiempo de vida activa comienza con una llamada a En resumen y termina con una llamada correspondiente a onPause.

Una Actividad activo está en el primer plano y está recibiendo eventos de entrada de usuario. Su actividad es probable que pasar por muchas
vidas activas antes de que sea destruido, ya que el tiempo de vida activa terminará cuando aparece una nueva actividad, el dispositivo se va
a dormir, o la actividad pierde el foco. Trate de mantener el código en el onPause y En resumen métodos rápidos y ligeros para asegurar que su
aplicación sigue siendo sensible cuando se mueve dentro y fuera del primer plano. Se puede suponer con seguridad que durante la vida
activa onPause será llamado antes de que termine el proceso.

NOTA Si el sistema determina que puede necesitar ser reanudado, a continuación, inmediatamente antes de este estado

Actividad onPause se realiza una llamada a onSaveInstanceState. Este método ofrece la oportunidad de guardar el estado de
la interfaz de usuario de la actividad en una Haz que se pueden pasar a la onCreate y onRestoreInstanceState métodos.
Utilizar onSaveInstanceState para guardar el estado de interfaz de usuario para garantizar que la actividad puede presentar
la misma interfaz de usuario cuando se activa la próxima. los onSaveInstanceState

manejador no se llamará si el sistema determina que el estado actual no se reanudará, por ejemplo, si la
actividad se cierra pulsando el botón Volver.

Dado que Android 3.0 Honeycomb (API nivel 11), la finalización de la onStop manejador marca el punto más allá del cual una actividad puede
ser matado sin previo aviso. Esto le permite mover todas las operaciones que consumen tiempo requerido para guardar el estado en onStop, mantener
su onPause ligero y se centró en la suspensión de las operaciones mnémicas o intensivo de la CPU, mientras que la actividad no se encuentra
activa. En función de la arquitectura de la aplicación, que puede incluir hilos de suspensión, procesos, o los receptores de radiodifusión,
mientras que su actividad no está en primer plano. El correspondiente En resumen método también debe ser ligero. No es necesario volver a
cargar el estado de interfaz de usuario aquí, porque esto debe manejado por el onCreate y onRestoreInstanceState métodos como se requiere.
Utilizar En resumen a las acciones realizadas dentro de revertir onPause -tales como la asignación de recursos liberados, inicializando o registrarse
componentes retirados o no registradas, y reanudar cualquier comportamiento suspendido.
Una mirada más cercana a Actividades Android | 69

Monitoreo de Cambios de estado

El código de esqueleto en el Listado 3-4 muestra los talones para los manipuladores método de cambio de estado disponibles en una actividad como se
describe en la sección anterior. Comentarios dentro de cada trozo describen las acciones que debe considerar teniendo en cada evento de cambio de
estado.

LISTADO 3-4: controladores de eventos estatales actividad

StateChangeMonitoringActivity clase pública se extiende AppCompatActivity {

// Llamado al comienzo de la vida útil completa. @Anular

public void onCreate (Bundle savedInstanceState) {


super.onCreate (savedInstanceState);

// Inicializar Actividad e inflar la interfaz de usuario. }

// Se llama antes de vidas posteriores visibles // para un proceso de Actividad. Es decir, antes de
una actividad // vuelve a ser visible antes de haber sido ocultado. @Anular

onRestart public void () {


super.onRestart ();

// Los cambios de carga a sabiendas de que la actividad ya se // ha sido visible dentro de


este proceso. }

// Llamado al inicio del curso de la vida visible. @Anular

onStart public void () {


super.onStart ();

// Aplicar cualquier cambio de interfaz de usuario requiere ahora que la actividad es visible. // Este es el lugar
donde quiere suelen comenzar cualquier proceso que // se requieren para asegurar que su interfaz de usuario
está poblada de manera adecuada y actualizada //. }

// Llamado después onStart ha terminado, en los casos en que una actividad se inició // después de haber sido destruida
por último el tiempo de ejecución en lugar de // por el usuario o la acción programática (por ejemplo, el usuario golpear la
espalda o // llamar a su aplicación final () . @ Override

public void onRestoreInstanceState (Bundle savedInstanceState) {


super.onRestoreInstanceState (savedInstanceState);

// restaurar el estado de la interfaz de usuario de la savedInstanceState. // Este


paquete también se ha pasado a onCreate. // es llamado solo si la actividad ha sido
// matado por el sistema desde la última visible. }
70 | CAPÍTULO 3 Aplicaciones y actividades y fragmentos, oh my!

// Llamado al inicio del curso de la vida activa. @Anular

onResume public void () {


super.onResume ();

// Reanudar ninguna pausa actualizaciones de la interfaz de usuario, hilos o procesos requeridos por la
actividad // pero suspendió cuando se vuelve inactiva. // En esta etapa, su actividad es de entrada activo y
recibiendo // de las acciones de los usuarios. }

// Llamado al final de la vida útil activa. @Anular

onPause public void () {


super.onPause ();

// Suspender cambios de interfaz de usuario, hilos o procesos intensivos de CPU // que no necesitan
ser actualizados cuando la actividad no es el // Actividad primer plano activo. Cabe destacar que en
varias pantallas // modo, se detuvo Actividades todavía puede ser visible, y como tal // debe continuar
realizando cambios de interfaz de usuario requeridas. }

// llama cuando apropiado para guardar los cambios de estado de interfaz de usuario en la // fin del
ciclo de vida activa. @Anular

onSaveInstanceState pública vacío (Bundle savedInstanceState) {


super.onSaveInstanceState (savedInstanceState);

// Guardar los cambios de estado de interfaz de usuario a la savedInstanceState. // Este paquete


se pasa al onCreate y onRestoreInstanceState // si el proceso se reinicia // murió y por el tiempo de
ejecución. Tenga en cuenta que este controlador // No se puede llamar si el tiempo de ejecución
determina // que la actividad se está "permanentemente" terminado. }

// Llamado al final de la vida útil visible. @Anular

onStop public void () {


super.onStop ();

// Suspendido restante IU actualizaciones, hilos, o la transformación // que no son necesarios


cuando la actividad no es visible. // Persisten todas las modificaciones o cambios de estado
como su actividad // pueden morir en cualquier momento después onStop ha completado //. }

// A veces llamado al final de la vida útil completa. @Anular

OnDestroy public void () {


super.onDestroy ();

// Limpiar los recursos, incluido el fin hilos, // cerrar conexiones de bases de datos,
etc.}

También podría gustarte