Red de conocimiento informático - Computadora portátil - Cómo afectará Android 7.0 a los desarrolladores

Cómo afectará Android 7.0 a los desarrolladores

Android N ofrece muchas características y funcionalidades nuevas, así como varios cambios en el comportamiento del sistema y de la API. Este artículo destacará algunos cambios importantes que debe tener en cuenta y considerar al desarrollar su aplicación.

Si ha publicado anteriormente una aplicación para Android, tenga en cuenta que su aplicación puede verse afectada por estos cambios de plataforma.

Batería y Memoria

Android N incluye cambios en el comportamiento del sistema diseñados para extender la duración de la batería del dispositivo y reducir el uso de RAM. Estos cambios pueden afectar la forma en que las aplicaciones acceden a los recursos del sistema y cómo el sistema interactúa con otras aplicaciones a través de intenciones implícitas específicas.

Modo de bajo consumo

Android 6.0 (nivel API

23) introduce el modo de bajo consumo, que se puede utilizar cuando el dispositivo del usuario está desconectado e inactivo. duración de la batería al retrasar la actividad de la CPU y la red cuando está activa y la pantalla está apagada. Android N

mejora aún más el modo de bajo consumo al aplicar algo de CPU

y aceleración de la red cuando el dispositivo está desconectado y la pantalla apagada, pero no cuando el dispositivo está en reposo (por (por ejemplo, no necesariamente cuando el usuario sale con el dispositivo portátil en el bolsillo).

Figura 1. Ejemplo de cómo los modos de bajo consumo aplican límites de actividad del sistema de primer nivel para extender la vida útil de la batería.

Cuando el dispositivo se está cargando y la pantalla ha estado apagada durante un tiempo determinado, el dispositivo entra en modo de bajo consumo y aplica la primera parte de la restricción: desactivar el acceso a la red de aplicaciones, aplazar tareas, y sincronización. Si el dispositivo está inactivo durante un cierto período de tiempo después de ingresar al Modo de bajo consumo, las restricciones restantes del Modo de bajo consumo se aplicarán a PowerManager.WakeLock, AlarmManager Alarm, GPS

y escaneo de Wi-Fi. Ya sea que se apliquen algunas o todas las restricciones del modo de bajo consumo, el sistema activa el dispositivo para proporcionar un breve período de mantenimiento durante el cual las aplicaciones pueden acceder a la red y realizar cualquier trabajo/sincronización diferida.

Figura 2. Ejemplo de cómo el modo de bajo consumo aplica límites de actividad del sistema de segundo nivel después de que el dispositivo ha estado inactivo durante un período de tiempo.

Tenga en cuenta que al activar la pantalla o conectar el dispositivo a la alimentación, se saldrá del modo de bajo consumo y se eliminarán estas restricciones de procesamiento. Este nuevo comportamiento no afecta las recomendaciones y mejores prácticas para adaptar su aplicación a los modos heredados de bajo consumo introducidos en Android 6.0 (API nivel 23), lo que cambiará el comportamiento entre el modo de bajo consumo y el modo de espera de la aplicación que se analiza en Optimización.

De todos modos debes seguir estas recomendaciones (por ejemplo, usar Google Cloud Messaging (GCM) para enviar y recibir mensajes) y comenzar a programar actualizaciones para adaptarse al nuevo comportamiento del modo de bajo consumo.

Project Svelte: Optimizaciones en segundo plano

Android N elimina tres transmisiones implícitas para ayudar a optimizar el uso de la memoria y el consumo de energía. Este cambio es necesario porque las transmisiones implícitas a menudo inician aplicaciones en segundo plano que están registradas para escuchar estas transmisiones. Eliminar estas transmisiones puede mejorar significativamente el rendimiento del dispositivo y la experiencia del usuario.

Los dispositivos móviles experimentan cambios frecuentes de conexión, como al cambiar entre Wi-Fi y datos móviles. Actualmente, las aplicaciones pueden monitorear estos cambios registrando un receptor en el manifiesto de la aplicación para escuchar transmisiones CONNECTIVITY_ACTION implícitas.

Debido a que muchas aplicaciones se registran para recibir esta transmisión, un cambio de red hará que todas las aplicaciones se activen y procesen esta transmisión al mismo tiempo.

De manera similar, las aplicaciones pueden registrarse para recibir transmisiones implícitas de ACTION_NEW_PICTURE y ACTION_NEW_VIDEO de otras aplicaciones (como la cámara).

Cuando el usuario toma una foto usando la aplicación de la cámara, estas aplicaciones se activarán para manejar la transmisión.

Para mitigar estos problemas, Android N aplica las siguientes optimizaciones:

Las aplicaciones desarrolladas para Android N no reciben transmisiones CONNECTIVITY_ACTION, incluso si tienen entradas de manifiesto que solicitan notificación de estos eventos.

Una aplicación que se ejecuta en primer plano y utiliza un BroadcastReceiver para solicitar notificaciones aún puede escuchar CONNECTIVITY_CHANGE en el hilo principal.

La aplicación no puede enviar ni recibir transmisiones de ACTION_NEW_PICTURE o ACTION_NEW_VIDEO.

Si tu aplicación utiliza algún Intent, aún debes eliminar sus dependencias lo antes posible para adaptarse adecuadamente a los dispositivos Android N. El marco de Android proporciona varias soluciones para aliviar la necesidad de estas transmisiones implícitas. Por ejemplo, la API JobScheduler

proporciona un poderoso mecanismo para programar operaciones de red que se ejecutarán cuando se cumplan condiciones específicas, como conectarse a una red infinita. Incluso puede utilizar JobScheduler para adaptarse a los cambios en su programa de entrega de contenido.

Para obtener más información sobre la optimización de backend en Android N y cómo reescribir su aplicación, consulte Optimización de backend.

Cambios de permisos

Android N realiza algunos cambios en los permisos que pueden afectar a tu aplicación.

Cambios en los permisos del sistema

Para mejorar la seguridad de los archivos privados, se ha restringido el acceso a directorios privados para aplicaciones de Android N o superiores (0700). Esta configuración evita la filtración de metadatos sobre archivos privados, como el tamaño o la existencia del archivo. Este cambio de permiso tiene varios efectos secundarios:

El propietario ya no debe relajar los permisos de archivos privados, y los intentos de usar MODE_WORLD_READABLE y/o MODE_WORLD_WRITEABLE activarán una excepción de seguridad.

Nota: Hasta la fecha, esta restricción no se ha aplicado por completo. Las aplicaciones aún pueden usar la API nativa o la API de archivos para modificar sus permisos de directorio privado. Sin embargo, desaconsejamos encarecidamente relajar los permisos del directorio privado.

Pasar un URI file:// fuera del dominio del paquete puede hacer que la ruta sea inaccesible para el destinatario. Por lo tanto, intentar pasar un URI file:// activará una FileUriExposedException.

DownloadManager ya no comparte archivos almacenados de forma privada por nombre de archivo.

Las versiones anteriores de las aplicaciones pueden experimentar rutas inaccesibles al acceder a COLUMN_LOCAL_FILENAME.

Las aplicaciones de Android N o superior activan una excepción de seguridad al intentar acceder a COLUMN_LOCAL_FILENAME.

Las aplicaciones heredadas que configuran su ubicación de descarga en una ubicación pública *** mediante DownloadManager.Request aún pueden acceder a la ruta COLUMN_LOCAL_FILENAME en _FILENAME, pero desaconsejamos este método.

El método preferido para acceder a archivos expuestos por DownloadManager es utilizar ContentResolver.openFileDescriptor().

Archivos compartidos dentro de la aplicación

Para aplicaciones orientadas a Android N, la política API StrictMode aplicada por el marco de trabajo de Android

prohíbe compartir archivos dentro de la aplicación. ://URI. Si un intent que contiene un URI de archivo sale de su aplicación, su aplicación generará una excepción FileUriExposedException, lo que provocará que la aplicación falle.

Para compartir archivos entre aplicaciones, debe enviar un URI de contenido:// y otorgar acceso temporal al URI. La forma más sencilla es utilizar la clase FileProvider.

Para obtener más información sobre permisos y **** archivos compartidos, consulte **** archivos compartidos.

Mejoras de accesibilidad

Android N ha realizado algunos cambios para mejorar la usabilidad de la plataforma para usuarios con baja visión o problemas visuales. Por lo general, estos cambios no requieren cambios en el código de su aplicación, pero debe revisar y probar cuidadosamente estas características en su aplicación para evaluar su impacto potencial en la experiencia del usuario.