Android Pie agrega una función para evitar matar juegos con mucha RAM si sales accidentalmente

Android Pie se está lanzando hoy y una de las características ocultas interesantes es la capacidad de evitar que los juegos con mucha RAM mueran si sales accidentalmente.

Hoy temprano, Google oficialmente anunciado Android Pie para Google Pixel y Google Pixel 2. Inmediatamente después, Esencial liberado la actualización de Android 9 para Essential Phone. Otros dispositivos que participaron en el programa beta de Android P pronto recibirá la actualización, por lo que los usuarios que se saltaron las Vistas previas para desarrolladores ahora tienen mucho que hacer para ponerse al día. A medida que profundizamos en la última versión, incluida la caída del código fuente en AOSP y el último Documento de definición de compatibilidad (CDD), lo actualizaremos periódicamente con cualquier información nueva que descubramos. Algo interesante que encontramos en el CDD es una sección para aplicaciones y juegos "pesados" (con mucha RAM). donde Android Pie priorizará mantener estas aplicaciones en la RAM en caso de que el usuario salga accidentalmente a ellos.

Aplicaciones y juegos "pesados" en Android Pie

Se ha añadido una nueva sección a la CDD que describe esta característica. Esto es lo que dice:

3.17. Aplicaciones pesadas

Si las implementaciones de dispositivos declaran la característica FEATURE_CANT_SAVE_STATE, entonces:

  • [C-1-1] DEBE tener solo una aplicación instalada que especifique cantSaveState ejecutándose en el sistema a la vez. Si el usuario abandona dicha aplicación sin salir explícitamente de ella (por ejemplo, presionando Inicio mientras deja una actividad activa, el sistema, en lugar de presionar Atrás sin dejar nada). actividades activas en el sistema), entonces las implementaciones del dispositivo DEBEN priorizar esa aplicación en la RAM como lo hacen para otras cosas que se espera que sigan ejecutándose, como el primer plano. servicios. Mientras dicha aplicación esté en segundo plano, el sistema aún puede aplicarle funciones de administración de energía, como limitar el acceso a la CPU y a la red.
  • [C-1-2] DEBE proporcionar una interfaz de usuario para elegir la aplicación que no participará en el mecanismo de guardado/restauración del estado normal una vez que el usuario inicie una segunda aplicación declarada con el atributo cantSaveState.
  • [C-1-3] NO DEBE aplicar otros cambios en la política a las aplicaciones que especifican cantSaveState, como cambiar el rendimiento de la CPU o cambiar la priorización de la programación.

Si las implementaciones del dispositivo no declaran la característica FEATURE_CANT_SAVE_STATE , entonces ellos:

  • [C-1-1] DEBE ignorar el atributo cantSaveState establecido por las aplicaciones y NO DEBE cambiar el comportamiento de la aplicación en función de ese atributo.

Básicamente, esto significa que, si un dispositivo admite la FEATURE_CANT_SAVE_STATE función, entonces deben priorizar mantener en la RAM la aplicación en ejecución que especifica la no puedo guardar estado atributo. Esta priorización de RAM se activa si el usuario sale de la aplicación o del juego presionando el botón de inicio o abandona la aplicación o el juego sin salir explícitamente (como al presionar el botón Atrás). o un botón para salir). Además, el sistema aún puede ahorrar energía al limitar el acceso a la CPU y a la red en esas aplicaciones, pero simplemente no pueden liberar RAM al eliminarlas a menos que sea necesario. Por último, tenga en cuenta que solo se permite ejecutar una aplicación con el atributo cantSaveState definido. Si intentas iniciar otra aplicación con este atributo definido mientras otra se está ejecutando, Android Pie te pedirá que elijas qué juego quieres seguir ejecutando.

Puede verificar si su dispositivo es compatible con FEATURE_CANT_SAVE_STATE ejecutando los siguientes dos comandos a través de ADB:

adb shell
dumpsys package | grep "cant_save_state"

Para verificar si una aplicación especifica el atributo cantSaveState, será necesario descompilar la aplicación y mirar su manifiesto o usar el dumpsys package package.name.here comando en el shell ADB. Tenga en cuenta que este atributo acaba de agregarse en el nivel API 28 (Android 9 Pie), por lo que es poco probable que muchas aplicaciones o juegos aprovechen esto todavía.

Esta característica será increíblemente útil para dispositivos con pequeñas cantidades de RAM y/o aplicaciones que consumen una tonelada de RAM. Por ejemplo, Fortnite Mobile en Android requiere un mínimo de 3 GB de RAM debido a la cantidad de RAM que consume (sin siquiera iniciar un juego, Fortnite Mobile estaba reservando 1,6 GB de RAM en mi Google Pixel 2 XL). Si Fortnite apuntara al SDK nivel 28 y usas esta función, entonces esto significa que salir accidentalmente del juego evitará que muera inmediatamente si tu dispositivo se está quedando sin energía. RAM libre. Desafortunadamente, Fortnite solo apunta al nivel 21 del SDK en este momento (Android 5.0 Lollipop), por lo que lamentablemente no aprovecha las últimas API que ofrece Google en Android Pie, y mucho menos Android Oreo, Android Nougat o Android Marshmallow. Con suerte, otros juegos se actualizarán para aprovechar esta función. El año que viene, Google los requerirá para actualizar si quieren poder continuar enviando actualizaciones en Google Play Store.