Android 10 presenta funciones y capacidades increíbles para usuarios y desarrolladores. En este documento, se destacan las novedades para desarrolladores.
Para obtener más información sobre las APIs, lee el informe de diferencias de API o visita Referencia de las APIs de Android: Busca las APIs que se agregaron nivel de API 29". También asegúrate de revisar el comportamiento de Android 10 (para las apps que se orientan al nivel de API 29 y para todas las apps), así como la privacidad cambios en la plataforma, para conocer las áreas en las que los cambios en la plataforma pueden afectan tus apps.
Mejoras de seguridad
Android 10 presenta varias funciones de seguridad, que se resumen en las siguientes secciones.
Diálogos de autenticación biométrica mejorados
En Android 10, se introducen las siguientes mejoras Compatibilidad con la autenticación biométrica:
- Se agregó una comprobación para la capacidad de autenticación biométrica.
- Un mecanismo de resguardo que permite que un usuario se autentique con su dispositivo PIN, patrón o contraseña si no pueden autenticarse con sus datos biométricos entrada.
- Sugerencia que le indica al sistema que no requiera la confirmación del usuario después de que este se autenticó con una modalidad biométrica implícita. Por ejemplo, podrías le indica al sistema que no se necesita realizar ninguna otra confirmación después de que un usuario se autenticó con la autenticación facial.
Ejecuta código DEX incorporado directamente desde un APK
A partir de Android 10, puedes indicarle a la plataforma que ejecute DEX incorporado directamente desde el archivo APK de la app. Esta opción puede ayudar a evitar un ataque si un atacante alguna vez logró manipular el código compilado localmente en el dispositivo.
Para obtener más información, consulta Ejecuta código DEX incorporado directamente desde un APK.
Compatibilidad con TLS 1.3
En Android 10, se agrega compatibilidad con TLS 1.3. TLS 1.3 es una revisión importante de la Estándar TLS que incluye beneficios de rendimiento y seguridad mejorada. Nuestro las comparativas indican que se pueden establecer conexiones seguras hasta en un 40% más rápida con TLS 1.3 que con TLS 1.2.
Para obtener más detalles sobre nuestra implementación de TLS 1.3, consulta la sección de TLS en los cambios de comportamiento de todas las apps .
API de Conscrypt pública
A partir de Android 10, el proveedor de seguridad de Conscrypt incluye un pública para la funcionalidad de TLS.
El conjunto de clases en
android.net.ssl
contienen elementos estáticos
para acceder a una funcionalidad que no está disponible desde la versión genérica
APIs de javax.net.ssl
. Los nombres de estas clases se pueden inferir como el plural
de la clase javax.net.ssl
correspondiente Por ejemplo, el código que opera en
En cambio, las instancias de javax.net.ssl.SSLSocket
pueden usar métodos de
SSLSockets
Funciones de conectividad
En Android 10, se incluyen varias mejoras relacionadas con redes y conectividad.
API de conexión de red Wi-Fi
En Android 10, se admiten las conexiones entre pares. Esta
permite que tu app le solicite al usuario que cambie el punto de acceso al que
al que está conectado el dispositivo con
WifiNetworkSpecifier
para describir las propiedades de una red solicitada. La conexión entre pares
usarse con fines que no sean de provisión de red, como la configuración de arranque para
dispositivos secundarios, como Chromecast y hardware de Google Home.
Para obtener más información, consulta API de Wi-Fi Network Request para intercambio entre pares conectividad.
API de sugerencia de red de Wi-Fi
Android 10 agrega compatibilidad para que tu app le solicite al usuario que se conecte a un punto de acceso Wi-Fi. Puedes proporcionar sugerencias de redes para conectar a los que tiene acceso una cuenta. En última instancia, la plataforma elegirá qué punto de acceso aceptar según la entrada de tu app y de otras.
Para obtener más información sobre esta función, consulta Sugerencia de Wi-Fi.
Mejoras a los modos de baja latencia y alto rendimiento de Wi-Fi
Android 10 te permite sugerirle al módem subyacente que minimice latencia.
Android 10 amplía la API de bloqueo de Wi-Fi para brindar compatibilidad eficaz con alto rendimiento y el de baja latencia. El ahorro de energía de Wi-Fi está inhabilitado para el modo de alto rendimiento y baja latencia, y podrías habilitar una mayor optimización de la latencia en el modo de baja latencia, según la compatibilidad del módem.
El modo de baja latencia solo se habilita cuando la aplicación que adquiere el bloqueo está se ejecuta en primer plano y la pantalla está encendida. El modo de baja latencia es especialmente útil para aplicaciones de juegos para dispositivos móviles en tiempo real.
Búsquedas especializadas en el agente de resolución de DNS
Android 10 agrega compatibilidad nativa para búsquedas de DNS especializadas mediante
búsquedas de texto simple y el modo DNS-over-TLS. Antes, el DNS de la plataforma
el agente de resolución solo admitía registros A y AAAA, lo que permite buscar solo la dirección IP
asociadas a un nombre, pero no admitían ningún otro tipo de registro.
La API de DnsResolver
proporciona una resolución asíncrona genérica que te permite buscar SRV
, NAPTR
y otros tipos de registros. Ten en cuenta que la app realizará el análisis de la respuesta.
Para apps basadas en NDK, consulta android_res_nsend
.
Easy Connect para Wi-Fi
Android 10 te permite usar Easy Connect para aprovisionar Wi-Fi
credenciales a un dispositivo de intercambio
de tráfico como reemplazo de WPS.
Las apps pueden integrar Easy Connect en su flujo de aprovisionamiento y configuración mediante
el
ACTION_PROCESS_WIFI_EASY_CONNECT_URI
.
Para obtener más información sobre esta función, consulta Easy Connect para Wi-Fi.
API de conexión para Wi-Fi directo
Las clases de API WifiP2pConfig
y WifiP2pManager
tienen actualizaciones en Android 10
para admitir capacidades de establecimiento de conexión rápida a Wi-Fi directo usando
información predeterminada. Esta información se comparte a través de un canal lateral, como
Bluetooth o NFC.
En la siguiente muestra de código, se indica cómo crear un grupo usando valores predeterminados información:
Kotlin
val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager val channel = manager.initialize(this, mainLooper, null) // prefer 5G band for this group val config = WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build() // create a non-persistent group on 5GHz manager.createGroup(channel, config, null)
Java
WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); Channel channel = manager.initialize(this, getMainLooper(), null); // prefer 5G band for this group WifiP2pConfig config = new WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build(); // create a non-persistent group on 5GHz manager.createGroup(channel, config, null);
Para unirte a un grupo usando credenciales, reemplaza manager.createGroup()
por el
lo siguiente:
Kotlin
manager.connect(channel, config, null)
Java
manager.connect(channel, config, null);
Canales orientados a la conexión (CoC) de Bluetooth de bajo consumo
Android 10 permite que tu app use conexiones CoC BLE para transferir datos más grandes entre dos dispositivos BLE. Esta interfaz abstrae las funciones de Bluetooth y la mecánica de conectividad para simplificar la implementación.
Funciones de telefonía
En Android 10, se incluyen varias mejoras relacionadas con la telefonía.
Mejoras en la calidad de las llamadas
Android 10 agrega la capacidad de recopilar información sobre la calidad de las llamadas al subsistema multimedia de IP (IMS), incluida la calidad desde y hacia la red, en dispositivos compatibles con la función.
Identificador de llamada y número de llamada
Android 10 proporciona a tu app un medio para identificar llamadas que no
en la libreta de direcciones del usuario como posibles llamadas de spam, así como para recibir
se rechaza sin aviso en nombre del usuario. Información sobre estas llamadas bloqueadas
se registra como llamadas bloqueadas en el registro de llamadas para brindar mayor transparencia a
al usuario cuando tiene llamadas perdidas. El uso de esta API elimina el requisito de obtener permisos de READ_CALL_LOG
del usuario para brindar la funcionalidad de identificador de llamada y número de llamada.
API de servicio de redireccionamiento de llamadas
Android 10 cambia la manera en la que se administran los intents de las llamadas. El
La transmisión de NEW_OUTGOING_CALL
dejó de estar disponible y se reemplazó por
API de CallRedirectionService
. La API de CallRedirectionService
proporciona
interfaces para que puedas modificar las llamadas salientes que realiza la plataforma de Android. Para
Por ejemplo, las apps de terceros podrían cancelar llamadas y redirigirlas por VoIP.
Mejoras en la creación de archivos en el almacenamiento externo
Además de introducir las configuraciones de alcance almacenamiento, Android 10 agrega las siguientes capacidades relacionadas con almacenamiento:
- Puedes usar la
IS_PENDING
marca para darle a tu app acceso exclusivo a un archivo multimedia mientras se escribe en el disco. - Si conoces una ubicación específica donde deberían almacenarse los archivos, puedes darle una sugerencia al sistema dónde almacenar los archivos escritos recientemente.
- Cada dispositivo de almacenamiento externo tiene un nombre de volumen único.
Contenido multimedia y gráficos
En Android 10, se incluyen las siguientes API y funciones de contenido multimedia y gráficos nuevas:
Uso compartido de entradas de audio
Android 10 agrega la capacidad para que dos apps compartan la entrada de audio simultáneamente. Para obtener información completa, consulta Uso compartido de entradas de audio.
Captura de reproducción de audio
Android 10 brinda a una app la capacidad de capturar la reproducción de audio de otras apps. Para obtener la información completa, consulta Captura de la reproducción.
Barra de búsqueda en notificaciones MediaStyle
A partir de Android 10, las notificaciones de MediaStyle
muestran una barra de búsqueda. En la que se ve el progreso de la reproducción desde PlaybackState.getPosition()
y, en algunos casos, puede buscarse una ubicación en el programa en reproducción. A continuación, se muestran las reglas que controlan la apariencia y el comportamiento de la barra de búsqueda:
- La barra de búsqueda aparece si hay un
MediaSession
activo y su duración (especificado porMediaMetadata.METADATA_KEY_DURATION
) es mayor que cero. Esto significa que la barra no aparece para transmisiones indeterminadas, como transmisiones en vivo y transmisiones de radio. - Si la sesión implementa
ACTION_SEEK_TO
, el usuario puede arrastrar la barra de búsqueda a controlar la ubicación de reproducción.
API de Native MIDI
La API de MIDI nativo de Android (AMidi) brinda a los desarrolladores de apps la capacidad para enviar y recibir datos MIDI con código C/C++, lo que se integra mejor con su lógica de control y audio de C/C++ y minimiza la necesidad de JNI.
Para obtener más información, consulta API de MIDI nativo de Android.
Mejoras de MediaCodecInfo
Android 10 agrega métodos para
MediaCodecInfo
que revelan más
información sobre un códec.
Para obtener más información, consulta Códecs de archivos multimedia.
API térmica
Cuando los dispositivos se sobrecalientan, pueden acelerar la CPU o la GPU, lo que puede afectan las apps y los juegos de forma inesperada. Aplicaciones que utilizan gráficos complejos, alto computación o actividad de red sostenida tienen más probabilidades de tener problemas y estos pueden variar según el dispositivo según las frecuencias del chipset y del núcleo, los niveles de y el empaquetado del dispositivo, y el factor de forma.
En Android 10, las apps y los juegos pueden usar una API térmica para supervisar los cambios en el dispositivo y tomar medidas que permiten mantener un menor consumo de energía a fin de restablecer la temperatura normal. Las apps registran un objeto de escucha en PowerManager, a través de la cual el sistema informa el estado térmico continuo que va de leve y moderada a grave, críticas, de emergencia y de apagado.
Cuando el dispositivo informa sobre un aumento considerable de la temperatura, las apps y los juegos pueden detenerse actividades en curso para reducir el uso de energía de varias maneras. Por ejemplo: de transmisión podría reducir la resolución, la tasa de bits o el tráfico de red, una desactiva el flash o la mejora intensiva de la imagen, un juego la velocidad de fotogramas o el mosaico de polígonos, una app de música podría reducir el volumen de la bocina, y una aplicación de mapas puede desactivar el GPS.
La API térmica requiere una nueva capa de HAL del dispositivo, que actualmente es compatible en dispositivos Pixel con Android 10. Estamos trabajando con los socios a los socios para brindar una amplia asistencia al ecosistema lo más rápido posible.
Imágenes y cámara
A continuación, se muestran las nuevas funciones relacionadas con las imágenes y la cámara que incluye Android 10:
Compatibilidad con la cámara monocromática
Android 9 (con nivel de API 28) fue la primera versión que introdujo la capacidad de cámara monocromática. En Android 10, se agregaron varias mejoras a la compatibilidad con la cámara monocromática:
- Compatibilidad con el formato de transmisión Y8 para mejorar la eficiencia de la memoria
- Compatibilidad con la captura DNG sin procesar monocromática
- Introducción a las enumeraciones MONO y NIR CFA para distinguir entre los cámara monocromática y cercana a cámaras infrarrojas.
Puedes usar esta función para capturar una imagen monocromática nativa. Un operador lógico dispositivo multicámara puede usar una cámara monocromática como subcámara física para lograr una mejor calidad de imagen con poca luz.
Formato de profundidad dinámica
A partir de Android 10, las cámaras pueden almacenar los datos de profundidad de una imagen en una archivo separado, con un esquema nuevo llamado formato de profundidad dinámica (DDF). Las apps pueden solicitar la imagen JPG y sus metadatos de profundidad, y usar esa información para aplicar el desenfoque que desee en el posprocesamiento sin modificar el original datos de imágenes.
Para leer las especificaciones de este formato, consulta Formato de profundidad dinámica.
Formato de archivo de imagen de alta eficiencia
El formato de archivo de imagen de alta eficiencia (HEIF) es un formato estándar de imágenes y videos que introduce codificación de mejor calidad y un tamaño de archivo más pequeño en comparación con otros formatos de archivo.
Para obtener más información sobre el formato de archivo, consulta HEIC:
Mejoras en la función de varias cámaras
Android 10 mejora la fusión de varias cámaras en una sola cámara lógica. una función que se introdujo en Android 9 (nivel de API 28). Se agregó lo siguiente a la API de Camera2:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
: Te permite consultar si la sesión aprobada o no se puede usar para crear una sesión de captura de la cámara.LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
: habilita te permite determinar el ID de la cámara física activa que respalda una lógica dispositivo de cámara. Puedes usar los IDs que se muestran para solicitar transmisiones lógicas transmisiones de subcámaras físicas para lograr una mejor eficiencia energética.
API de servicios de accesibilidad
Android 10 introduce el siguiente servicio de accesibilidad nuevo. y APIs de Google Cloud:
Marca de clave de entrada de AccessibilityNodeInfo
A partir de Android 10, puedes llamar a isTextEntryKey()
para determinar si un AccessibilityNodeInfo
determinado representa una tecla de entrada de texto que forma parte de un teclado.
Comentarios por voz del diálogo de accesibilidad
En el caso de que los usuarios necesiten ejecutar el acceso directo de accesibilidad para iniciar un servicio de accesibilidad, Android 10 permite que el diálogo se muestre junto con una solicitud de texto a voz si el servicio la solicita.
Acceso directo de accesibilidad cuando la navegación por gestos está habilitada
Cuando la función de navegación por gestos está habilitada En Android 10, la accesibilidad no visibles o seleccionables. Para acceder al menú de servicios de accesibilidad, los usuarios deben realiza uno de los siguientes gestos:
- Deslizan dos dedos hacia arriba.
- Deslizan dos dedos hacia arriba y los mantienen presionados.
Acceso directo de accesibilidad para teclados físicos
En Android 10, los usuarios pueden activar el acceso directo de accesibilidad en un teclado físico presionando Control + Alt + Z.
Mejora del controlador de teclado en pantalla
En Android 10, los servicios de accesibilidad pueden solicitar que la configuración teclado incluso cuando el dispositivo detecta un teclado físico conectado. Los usuarios no pueden anular este comportamiento.
Tiempos de espera de accesibilidad definidos por el usuario
Android 10 presenta
getRecommendedTimeoutMillis()
API de gcloud. Este método es compatible con los tiempos de espera definidos por el usuario para interacciones
elementos no interactivos de la interfaz de usuario. El valor que se muestra está influenciado por
preferencias y APIs del servicio de accesibilidad.
Mejoras de autocompletar
En Android 10, se incluyen las siguientes mejoras para el servicio de autocompletar.
Solicitudes de autocompletar relacionadas con la compatibilidad
Puedes usar la
FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST
marca para determinar si se generó una solicitud de Autocompletar mediante compatibilidad
.
Guarda el nombre de usuario y la contraseña de manera simultánea
Puedes admitir casos en los que una aplicación usa varias actividades para
mostrar nombre de usuario, contraseña y otros campos con el
SaveInfo.FLAG_DELAY_SAVE
marca.
Interacción del usuario con la IU de guardar
Puedes configurar una acción para mostrar y ocultar un campo de contraseña en un diálogo de guardado. objeto de escucha en el diálogo y cambia la visibilidad de la contraseña correspondiente o con la vista remota.
Compatibilidad con la actualización de conjuntos de datos
La función "Autocompletar" puede actualizar las contraseñas existentes. Por ejemplo, si un usuario ya almacenó una contraseña y guarda una nueva, Autocompletar le solicitará actualizar la contraseña existente en lugar de guardar una nueva.
Mejoras de clasificación de campos
En Android 10, se incluyen las siguientes mejoras a la API de clasificación de campos.
Constructor de UserData.Builder
El
UserData.Builder
Se cambió el constructor para alinearse mejor con el patrón Builder
.
Permite que un valor se asigne a varios tipos de ID de categoría
Cuando uses
UserData.Builder
in
En Android 10, ahora puedes asignar un valor a varios tipos de IDs de categoría. En las versiones anteriores, se mostraba una excepción si agregabas un valor más de una vez.
Compatibilidad mejorada con números de tarjetas de crédito
La clasificación de campos ahora puede detectar números de cuatro dígitos como los cuatro últimos dígitos del número de una tarjeta de crédito.
Compatibilidad con la clasificación de campos específicos de la app
Adiciones de Android 10
FillResponse.setUserData()
,
que te permite configurar datos del usuario específicos de la app para la duración de la sesión.
Esto ayuda al servicio de autocompletado a detectar tipos para los campos con valores
contenido.
Controles del sistema y de IU
En Android 10, se ofrecen las siguientes mejoras de interfaz del usuario:
Compatibilidad con limitaciones de JVMTI PopFrame
En Android 10, se agregó compatibilidad con la capacidad can_pop_frames
en la implementación de Android JVMTI. Durante la depuración, esta función
te permite volver a ejecutar funciones después de hacer una pausa en un punto de interrupción y ajustar
locales o globales, o la implementación de una función. Para obtener más información, consulta
Página de referencia de Pop Frame de Oracle
API de control de superficie
Android 10 ofrece lo siguiente:
API de SurfaceControl
para el acceso de bajo nivel al compositor del sistema
(SurfaceFlinger
). Para
para la mayoría de los usuarios, SurfaceView es la manera correcta de aprovechar el compositor. La API de SurfaceControl
puede ser útil en determinados casos, por ejemplo:
- Sincronizar varias superficies
- Incorporar superficies con un proceso cruzado
- Administrar el tiempo de vida de bajo nivel
La API de SurfaceControl
está disponible en
Vinculaciones de SDK y NDK.
La implementación del NDK incluye una API para el intercambio manual de búferes con el
compositor. Esto brinda una alternativa para los usuarios que se enfrentaron al
limitaciones de
BufferQueue
Detección del procesador de inactividad de WebView
Android 10 presenta
WebViewRenderProcessClient
abstracta, que las apps pueden usar para detectar si una
WebView
no responde. Para
usa esta clase:
- Define tu propia subclase e implementa su
onRenderProcessResponsive()
yonRenderProcessUnresponsive()
. - Adjunta una instancia de tu
WebViewRenderProcessClient
a uno o más objetosWebView
. - Si
WebView
no responde, el sistema llama a el métodoonRenderProcessUnresponsive()
del cliente, pasando los valoresWebView
yWebViewRenderProcess
(Si elWebView
es de un solo proceso,WebViewRenderProcess
es nulo). Tu app puede realizar una acción adecuada, como mostrar un cuadro de diálogo al usuario donde se le pregunta si desea detener el proceso de renderización.
Si WebView
sigue sin responder, el sistema llama a onRenderProcessUnresponsive()
de manera periódica (no más de una vez cada cinco segundos), pero no realiza ninguna otra acción.
Si WebView
responde
otra vez, el sistema llama a onRenderProcessResponsive()
solo una vez.
Paneles de configuración
Android 10 presenta los Paneles de configuración, una API que permite que las apps muestren a los usuarios en el contexto de su app. Esto evita que los usuarios necesiten ve a Configuración y cambia opciones como NFC o Datos móviles en para usar la app.
Por ejemplo, supongamos que un usuario abre un navegador web mientras su dispositivo está en modo de avión. Antes de Android 10, la app solo podía mostrar un mensaje genérico pidiéndole al usuario que abra la Configuración para restablecer la conectividad. Con Android 10, la app de navegador puede mostrar un panel intercalado en el que se visualizan ajustes clave de la configuración de conectividad, como el modo de avión, la red Wi-Fi (incluidas las redes cercanas) y los datos móviles. Con este panel, los usuarios pueden restablecer la conectividad sin salir de la aplicación.
Para mostrar un panel de configuración, activa un intent con una de las siguientes acciones de Settings.Panel
:
Kotlin
val panelIntent = Intent(Settings.Panel.settings_panel_type) startActivityForResult(panelIntent)
Java
Intent panelIntent = new Intent(Settings.Panel.settings_panel_type); startActivityForResult(panelIntent);
settings_panel_type
puede ser una de las siguientes opciones:
ACTION_INTERNET_CONNECTIVITY
- Muestra la configuración relacionada con la conexión a Internet, como el modo de avión, Wi-Fi y los datos móviles.
ACTION_WIFI
- Muestra la configuración de Wi-Fi, pero no las demás opciones de configuración de conectividad. Este es útil para las aplicaciones que necesitan una conexión Wi-Fi para realizar cargas grandes o descargas.
ACTION_NFC
- Muestra todos los parámetros de configuración relacionados con la comunicación de campo cercano (NFC).
ACTION_VOLUME
- Muestra la configuración de volumen de todas las transmisiones de audio.
Mejoras de uso compartido
En Android 10, se ofrecen varias mejoras para el uso compartido:
API de accesos directos de uso compartido
La API de accesos directos de uso compartido reemplaza al Direct Share APIs.
En lugar de obtener resultados de manera reactiva a pedido, la API de accesos directos de uso compartido
permite que las apps publiquen objetivos de uso compartido directo con anticipación. Así es como
funciona ShortcutManager
.
Como las dos APIs son similares, expandimos la ShortcutInfo
de la API para que el uso de
para facilitar las funciones. Con la API de accesos directos de uso compartido, puedes asignar directamente
categorías o personas a un objetivo de uso compartido. Los objetivos de uso compartido permanecerán en el sistema hasta que la misma app los actualice, o bien esta se desinstale.
El antiguo mecanismo de Direct Share aún funciona, pero las apps que lo usan tienen un menor que las apps que usan la API de accesos directos de uso compartido.
ShortcutInfo.Builder
Agrega y mejora métodos para proporcionar información adicional sobre el objetivo de uso compartido.
Objetivos de uso compartido directo
Puedes publicar un acceso directo dinámico como un objetivo de uso compartido directo. Para ello, consulta Cómo publicar objetivos de uso compartido directo.
ShortcutManagerCompat
es una nueva API de AndroidX que brinda retrocompatibilidad con la antigua API de DirectShare. Esta
es la forma preferida de publicar objetivos de uso compartido.
Cómo obtener una vista previa del texto
Cuando una app comparte contenido de texto, puede mostrar una vista previa opcional de el contenido en la IU de Sharesheet.
Consulta Cómo agregar vistas previas de texto enriquecido
Más información
Para obtener más información sobre cómo las apps comparten datos, consulta Cómo enviar datos simples a otras apps y Cómo recibir datos simples de otras apps
Tema oscuro
Android 10 ofrece un tema oscuro que se aplica tanto a la versión la IU del sistema y las apps que se ejecutan en el dispositivo. Para obtener información completa, consulta Tema oscuro.
Tipos de servicios en primer plano
Android 10 presenta
foregroundServiceType
Atributo XML del manifiesto, que se incluye en la definición de varias
de Google Cloud. Es posible asignar varios tipos de servicios en primer plano a un servicio en particular, aunque no suele ser apropiado.
En la siguiente tabla, se muestran los diferentes tipos de servicios en primer plano y los servicios en los que es apropiado declarar un tipo específico:
Tipo de servicio en primer plano | Ejemplo de caso práctico para un servicio que debería declarar este tipo |
---|---|
connectedDevice
| Supervisar un wearable que registra la actividad física |
dataSync
| Descargar archivos desde una red |
location
| Continuar una acción iniciada por el usuario |
mediaPlayback
| Reproducir un audiolibro, un podcast o música |
mediaProjection
| Grabar un video de la pantalla del dispositivo durante un período breve |
phoneCall
| Encargarse de una llamada telefónica en curso |
Kotlin
En Android 10, se incluyen las siguientes actualizaciones para el desarrollo en Kotlin.
Anotaciones de nulidad para API de libcore
Android 10 mejora la cobertura de las anotaciones de nulabilidad en el SDK para las APIs de libcore. Estas anotaciones permiten que los desarrolladores de apps que usan el análisis de nulabilidad de Kotlin o Java en Android Studio para obtener la nulidad cuando interactúa con estas APIs.
Por lo general, las infracciones del contrato de nulabilidad en Kotlin dan como resultado compilación.
errores. Para garantizar la compatibilidad con tu código existente, solo
Se agregaron las anotaciones @RecentlyNullable
y @RecentlyNonNull
. Esto significa
que las infracciones de nulabilidad dan como resultado advertencias en lugar de errores.
Además, cualquier anotación de @RecentlyNullable
o @RecentlyNonNull
que se haya agregado en Android 9 cambiará por @Nullable
y @NonNull
, respectivamente.
Esto significa que, en Android 10 y versiones posteriores, los incumplimientos de nulidad
generan errores en lugar de advertencias.
Para obtener más información sobre los cambios en las anotaciones, consulta El SDK de Android Pie ahora es más compatible con Kotlin en el blog para desarrolladores de Android.
NDK
En Android 10, se incluyen los siguientes cambios en el NDK.
Depuración mejorada de la propiedad del descriptor de archivo
En Android 10, se agrega "fdsan", que te ayuda a encontrar y corregir la propiedad del descriptor de archivo. los problemas con mayor facilidad.
Errores relacionados con el manejo inadecuado de la propiedad del descriptor de archivo, que suelen manifestarse como use-after-close y Double-close, son análogas a la asignación de memoria errores uso después de la liberación y doble libre, pero suelen ser más difíciles de para diagnosticar y solucionar problemas. fdsan intenta detectar o impedir el descriptor de archivos. al aplicar la propiedad del descriptor de archivo.
Para obtener más información sobre las fallas relacionadas con estos problemas, consulta Error detectado por fdsan. Para obtener más información sobre fdsan, consulta la página sobre fdsan en Googlesource.
TLS de ELF
Las aplicaciones compiladas mediante el NDK con el nivel de API mínimo 29 pueden usar TLS de ELF
en lugar de emutls
. Se agregó compatibilidad con el vinculador estático y dinámico a fin de admitir este método para administrar las variables de subprocesos locales.
En el caso de las apps creadas para un nivel de API de 28 y niveles inferiores, se implementaron mejoras para que libgcc/compiler-rt
funcione como solución alternativa a problemas de emutls
.
Para obtener más información, consulta Cambios en Android para desarrolladores de NDK.
Tiempo de ejecución
En Android 10, se incluye el siguiente cambio en el tiempo de ejecución.
Activación de recolección de elementos no utilizados basada en mallinfo
Cuando pequeños objetos Java de la plataforma hacen referencia a objetos enormes del montón de C++, el Los objetos C++ a menudo pueden reclamarse solo cuando se recopila el objeto Java. por ejemplo, finalizado. En las versiones anteriores, la plataforma calculaba los tamaños de muchos objetos C++ asociados a los objetos Java. Esta estimación no siempre fue y, en ocasiones, generaba un aumento significativo en el uso de la memoria, de Google Cloud no pudo recolectar elementos no utilizados cuando debería.
En Android 10, el recolector de elementos no utilizados (GC) realiza un seguimiento del tamaño total
del montón asignado por el sistema malloc()
, lo que garantiza que malloc()
asignaciones de tráfico se incluyen siempre en los cálculos de activación de la GC. Intercalado de apps
grandes cantidades de asignaciones C++ con ejecución de Java pueden observar un aumento en
y la frecuencia de la recolección
de elementos no utilizados. Otras apps podrían notar una disminución leve.
Pruebas y depuración
En Android 10, se incluyen las siguientes mejoras para la prueba y la depuración:
Mejoras del registro del sistema en el dispositivo
A partir de Android 10, puedes especificar límites para el tamaño y la duración del registro cuando haces un registro del sistema en el dispositivo. Cuando especificas cualquiera de los dos valores, el sistema realiza un registro largo y lo copia periódicamente búfer al archivo de destino mientras se registra el registro. El seguimiento se completa cuando se alcanzan los límites de tamaño o duración que especificaste.
Usa estos parámetros adicionales para probar casos de uso diferentes de los que probarías con un registro estándar. Por ejemplo, podrías estar diagnosticando un error de rendimiento que solo ocurre después de que la app ha estado en ejecución durante un período prolongado. En en este caso, podrías registrar un largo trazado de un día entero y, luego, analizar el programador de CPU, la actividad del disco, los subprocesos de la app y otros datos del informe para ayudarte a determinar la causa del error.
En Android 10 y versiones posteriores, los archivos de registro se guardan en un formato que se puede abrir con Perfetto, un proyecto de código abierto para la instrumentación y el seguimiento del rendimiento. Puedes convertir archivos de registro de Perfetto en Systrace formato.
Mejoras de TextClassifier
Android 10 proporciona una funcionalidad adicional de clasificación de texto en la
TextClassifier
interfaz de usuario.
Detección de idioma
El
detectLanguage()
funciona de manera similar a los métodos de clasificación que existían anteriormente. Integra
recibe un
TextLanguage.Request
objeto y muestra un
TextLanguage
.
Los objetos TextLanguage
consisten en una lista de pares ordenados. Cada par
contiene una configuración regional y la puntuación de confianza correspondiente para la clasificación.
Acciones de conversación sugeridas
El método suggestConversationActions()
funciona de manera similar a los métodos de clasificación existentes. Recibe un
ConversationActions.Request
objeto y muestra un
ConversationActions
.
ConversationActions
consisten en una lista de
ConversationAction
objetos. Cada objeto ConversationAction
incluye una acción potencial sugerida y su puntuación de confianza.
Respuestas inteligentes/acciones en notificaciones
En Android 9, se introdujo la opción de mostrar respuestas sugeridas dentro de una notificación. Android 10 amplía estas capacidades con la capacidad de incluyen acciones sugeridas basadas en la intención. Además, la plataforma puede automáticamente estas sugerencias. Las apps aún pueden brindar o inhabilitar las sugerencias generadas por el sistema.La API utilizada para generar estas respuestas forma parte de
TextClassifier
,
y se expuso directamente a los desarrolladores en Android 10.
Consulta la sección sobre las mejoras de TextClassifier.
para obtener más información.
Si tu app proporciona sus propias sugerencias, la plataforma no genera ninguna.
sugerencias automáticas. Si no quieres que se muestren las notificaciones de tu app
respuestas o acciones sugeridas, puedes inhabilitar las respuestas generadas por el sistema
y acciones mediante
setAllowGeneratedReplies()
y
setAllowSystemGeneratedContextualActions()