Te interesa actualizar la versión de Android en tu aplicación pero no estás seguro si vas a romper algo?
No te termina de cerrar por qué deberías actualizar la versión?
Te gustaría saber que cosas nuevas encontrar en Android O para poder ponerlas en práctica en tus aplicaciones?
Queres saber en que afectan a tu aplicación los nuevos cambios, y como atacar esos problemas?
Estas diapositivas te van a ayudar
7. Límites de ejecución en segundo plano
● Mejora de UX y Batería.
● Limitaciones en Background Services.
● Limitaciones en Broadcasts.
● Recomendación Google: JobScheduler.
● Pueden afectar a todas las aplicaciones.
#AndroidDevsBsAs
9. Limitaciones en Background Services
● No podemos iniciar un Background Service con aplicaciones que están
en Background.
● Cuándo estamos en Foreground?
○ Activity visible.
○ Servicio en Foreground.
○ Otra aplicación en Foreground está conectada a nuestra App.
● Whitelist.
#AndroidDevsBsAs
10. Limitaciones en Background Services
Soluciones.
● Context.startForegroundService()
● Migrar a JobScheduler.
● Usar Firebase Cloud Messaging para "despertar" la app.
#AndroidDevsBsAs
11. Limitaciones en Background Services
startService()
Context
startForeground()
Service
Foreground
Service
startForegroundService()
Context
startForeground()
Service
Foreground
Service
#AndroidDevsBsAs
Desde
Android O
Antes de
Android O
12. Limitaciones en Broadcasts
● No se pueden registrar Broadcasts implícitos en Manifest.
● Podemos registrar Broadcasts explícitos en Manifest.
● Podemos registrar cualquier Broadcast en Runtime.
● Existen excepciones.
#AndroidDevsBsAs
15. Limitaciones de Ubicación en segundo plano
● Mejora de UX, Batería y Funcionamiento.
● Menor frecuencia de actualizaciones.
● En Foreground no se aplican las limitaciones.
● APIs afectadas:
○ LocationManager.
○ FusedLocationProvider.
#AndroidDevsBsAs
16. Limitaciones de Ubicación en segundo plano
Soluciones.
● Utilizar la API más reciente para localización.
● Utilizar Foreground Service.
● Utilizar GeofencingAPI.
#AndroidDevsBsAs
17. Seguridad y Privacidad
● No más compatibilidad con SSLv3.
● HttpURLConnection no utiliza versiones de TLS anteriores si no puede
establecer una negociación correcta.
● WebView ejecutado en modo multi-proceso.
● Cambios en ANDROID_ID
#AndroidDevsBsAs
18. Otros cambios
● Bluetooth.
● Accesibilidad.
● AbstractCollection.
● Configuración Regional e Internacionalización.
● Dispositivos de entrada y navegación.
● UncaughtExceptionHandler.
#AndroidDevsBsAs
20. Permisos
● No se otorgan todos los permisos de un grupo al solicitar uno solo.
STORAGE
READ_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGE
#AndroidDevsBsAs
21. Acceso y visibilidad para Cuentas
● No es suficiente el permiso GET_ACCOUNTS.
● AccountManager.newChooseAccountIntent()
● LOGIN_ACCOUNTS_CHANGED_ACTION deprecado.
#AndroidDevsBsAs
22. ContentResolver y ContentProvider
● Cambios en comportamientos:
○ ContentResolver.notifyChange()
○ ContentResolver.registerContentObserver()
● ContentProvider válido para la autoridad de todos los URIs.
● Mayor seguridad para nuestra aplicación.
#AndroidDevsBsAs
23. Otros cambios
● Seguridad.
● Medios (AudioAttributes).
● Bibliotecas nativas.
● Collections.sort() vs List.sort().
#AndroidDevsBsAs
25. Notificaciones
● Canales de notificaciones.
● Notification Badges.
● Notificaciones pospuestas.
● Timeout.
● Mayor contenido.
#AndroidDevsBsAs
26. Canales de notificaciones
● Sistema unificado para manejo de notificaciones.
● Un canal por cada tipo de notificación.
● No se puede modificar su comportamiento una vez que fue añadido al
NotificationManager.
● Cambios en la "Importancia" de las notificaciones.
○ IMPORTANCE_NONE (0) a IMPORTANCE_HIGH (4).
#AndroidDevsBsAs
30. Canales de notificaciones
● Información del canal.
○ NotificationManager.getNotificationChannel(String channelID)
● Eliminación de un canal.
○ NotificationManager.deleteNotificationChannel(NotificationChannel
channel)
#AndroidDevsBsAs
32. Notification Badges
● Se puede deshabilitar la funcionalidad para un determinado canal.
○ NotificationChannel.setShowBadge(false)
● Se puede modificar el número de notificaciones que muestra el Badge.
○ Notification.Builder.setNumber(int number)
● Se puede modificar el ícono que se muestra en el Badge.
○ Notification.Builder.setBadgeIconType(BADGE_ICON_SMALL)
#AndroidDevsBsAs
34. Downloadable Fonts
● Utilizar fuentes sin incluirlas en nuestro APK.
● FontProvider: aplicación que tiene fuentes para que utilicen otras
aplicaciones.
#AndroidDevsBsAs
36. Fuentes en XML
● Fuentes como resources - res/font/
● @font/mi_fuente o R.font.mi_fuente
● Requiere la librería de soporte.
● Podemos crear familias de fuentes.
#AndroidDevsBsAs
38. Autosizing TextView
● Agrandar o achicar el tamaño del texto dinámicamente.
● Tres formas de setear el Autosizing:
○ Default.
○ Granularity.
○ Preset Sizes.
#AndroidDevsBsAs
39. Autosizing TextView - Default
Escala uniformemente de manera horizontal o verticalmente.
#AndroidDevsBsAs
40. Autosizing TextView - Granularity
Escala uniformemente de manera horizontal o verticalmente, pero con
restricciones.
#AndroidDevsBsAs
41. Autosizing TextView - Preset Size
Se especifican todos los tamaños de texto que el TextView puede tomar
#AndroidDevsBsAs
42. findViewById
● No va a ser necesario castear el resultado de findViewById para obtener
la View correcta.
● Activity vs. AppCompatActivity.
#AndroidDevsBsAs
44. Custom Data Store
● Alternativa a almacenar Preferences en SharedPreferences.
● Se implementa con la interfaz PreferenceDataStore.
#AndroidDevsBsAs
45. Categorías de Aplicaciones
● Declarar una categoría para nuestra Aplicación.
● Se agrega el tag android:appCategory en AndroidManifest.
● Categorías disponibles:
#AndroidDevsBsAs
46. Datos almacenados en Caché
● Cada aplicación tiene su espacio en Caché.
○ StorageManager.getCacheQuotaBytes(UUID)
● Nuevos métodos para indicarle al Sistema como controlar nuestra Caché.
○ StorageManager.setCachedBehaviorAtomic().
○ StorageManager.setCacheBehaviorTombstone().
● Para agregar un archivo muy grande, utilizar:
○ StorageManager.getAllocatableBytes(UUID).
○ StorageManager.allocateBytes(FileDescriptor, long).
#AndroidDevsBsAs
47. Autofill Framework
● Ahorrar tiempo y minimiza errores al completar formularios.
● Los usuarios pueden o no habilitarlo.
● Todas las Apps funcionan con el Framework.
● Una App puede implementar su propio servicio de Autofill.
● Soporte para Custom Views.
#AndroidDevsBsAs
48. Smart Sharing
Android O abre las aplicaciones adecuadas para cada acción de "Share",
dependiendo de lo que se está queriendo compartir.
#AndroidDevsBsAs
49. Actualizaciones del lenguaje Java
● Agregan librerías de OpenJDK 8.
○ java.time.
○ Bibliotecas para manejo de archivos.
● Android Studio 3.
○ Expresiones Lambda.
○ Method References.
○ Métodos estáticos y default para interfaces.
○ Stream.
○ Try-with-resources.
#AndroidDevsBsAs
50. Conectividad
● Wi-Fi Aware.
● Bluetooth.
● Personalización de la sincronización entre dispositivos companion.
#AndroidDevsBsAs
51. Modo Picture in Picture (PiP)
● Funciona con Activity's.
● Cuidado con el estado del Activity.
● Cambios en la API.
○ PictureInPictureParams, define comportamiento específico de una Activity.
● Implementación de la funcionalidad:
○ android:supportsPictureInPicture="true" en el AndroidManifest.
#AndroidDevsBsAs
52. Accesibilidad
● Gestos de Huella Digital.
○ Deslizamientos direccionales en el sensor de huellas.
● Hint Text.
○ isShowingHintText()
○ setShowingHintText()
○ getHintText()
#AndroidDevsBsAs
53. Unificación de márgenes y paddings
● Se unifican los márgenes y paddings horizontales/verticales.
● layout_marginVertical.
● layout_marginHorizontal.
● paddingVertical.
● paddingHorizontal.
#AndroidDevsBsAs
54. ● Adaptive Icons.
● Sincronización de dispositivos companion.
● Paginación en ContentProvider's.
● Actualización explícita de ContentProvider's.
● AnimatorSet.
● Cambios en la API de WebView.
● Fijación de Shortcuts y Widgets.
Otras funcionalidades
#AndroidDevsBsAs
55. ● Mejoras en JobScheduler y cambios en la API.
● Mejora de soporte al mousse.
● Nuevos detectores StrictMode.
● Mejoras en el acceso a las Cuentas del usuario.
● Mejora en el acceso a archivos multimedia.
Otras funcionalidades
#AndroidDevsBsAs