Android Pie lägger till funktion för att förhindra att RAM-tunga spel dödas om du av misstag avslutar

Android Pie rullar ut idag och en av de coola dolda funktionerna är möjligheten att förhindra RAM-tunga spel från att dödas om du av misstag avslutar.

Tidigare idag, Google officiellt meddelat Android Pie för Google Pixel och Google Pixel 2. Omedelbart därefter, Essential släppt Android 9-uppdateringen för Essential Phone. Andra enheter som deltog i Android P beta-programmet bör snart få uppdateringen, så användare som hoppade över Developer Previews har nu mycket att komma ikapp. När vi gräver i den senaste versionen inklusive källkodssläpp på AOSP och det senaste kompatibilitetsdefinitionsdokumentet (CDD), kommer vi regelbundet att uppdatera dig med all ny information vi upptäcker. Något intressant vi hittade i CDD: n är en sektion för "heavyweight" (RAM-tunga) appar och spel där Android Pie kommer att prioritera att behålla dessa appar i RAM-minnet om användaren av misstag skulle avsluta dem.

"Tungvikts" appar och spel i Android Pie

En ny sektion har lagts till CDD som beskriver denna funktion. Så här står det:

3.17. Tungviktsappar

Om enhetsimplementeringar deklarerar funktionen FEATURE_CANT_SAVE_STATE, då:

  • [C-1-1] MÅSTE bara ha en installerad app som anger cantSaveState som körs i systemet åt gången. Om användaren lämnar en sådan app utan att uttryckligen lämna den (till exempel genom att trycka hem medan han lämnar en aktiv aktivitet i systemet, istället för att trycka tillbaka utan att vara kvar aktiva aktiviteter i systemet), då MÅSTE enhetsimplementeringar prioritera den appen i RAM-minnet som de gör för andra saker som förväntas fortsätta köras, till exempel förgrunden tjänster. Medan en sådan app är i bakgrunden kan systemet fortfarande använda energihanteringsfunktioner på den, som att begränsa CPU- och nätverksåtkomst.
  • [C-1-2] MÅSTE tillhandahålla ett UI-tillstånd för att välja appen som inte kommer att delta i mekanismen för normalläge för att spara/återställa när användaren startar en andra app som deklareras med attributet cantSaveState.
  • [C-1-3] FÅR INTE tillämpa andra ändringar i policyn på appar som anger cantSaveState, som att ändra CPU-prestanda eller ändra schemaläggningsprioritering.

Om enhetsimplementeringar inte deklarerar funktionen FEATURE_CANT_SAVE_STATE , då de:

  • [C-1-1] MÅSTE ignorera cantSaveState-attributet som ställts in av appar och FÅR INTE ändra appbeteendet baserat på det attributet.

I grund och botten betyder detta att om en enhet stöder FEATURE_CANT_SAVE_STATE funktionen, då måste de prioritera att behålla den löpande appen i RAM-minnet som anger cantSaveState attribut. Denna RAM-prioritering startar om användaren lämnar appen eller spelet genom att trycka på hemknappen eller lämna appen eller spelet utan att uttryckligen avsluta det (som med en tillbakaknappstryckning eller en quit-knapp.) Dessutom kan systemet fortfarande spara ström genom att begränsa CPU- och nätverksåtkomst på dessa appar, men de kan helt enkelt inte frigöra RAM genom att döda dem om det inte är nödvändig. Slutligen, notera att endast en app med attributet cantSaveState definierat får köras. Om du försöker starta en annan app med det här attributet definierat medan en annan körs, kommer Android Pie att be dig välja vilket spel du vill fortsätta köra.

Du kan kontrollera om din enhet stöder FEATURE_CANT_SAVE_STATE genom att köra följande två kommandon via ADB:

adb shell
dumpsys package | grep "cant_save_state"

För att kontrollera om en app anger cantSaveState-attributet måste appen dekompileras och titta på dess manifest eller använda dumpsys package package.name.here kommando i ADB-skal. Tänk på att det här attributet precis lades till i API-nivå 28 (Android 9 Pie) så det är osannolikt att många appar eller spel kommer att dra nytta av detta ännu.

Den här funktionen kommer att vara otroligt användbar för enheter med små mängder RAM och/eller appar som äter upp massor av RAM. Till exempel Fortnite Mobile på Android kräver minst 3 GB RAM på grund av hur mycket RAM det äter upp (utan att ens lansera ett spel, Fortnite Mobile reserverade 1,6 GB RAM på min Google Pixel 2 XL.) Om Fortnite skulle rikta in sig på SDK nivå 28 och använd den här funktionen, så betyder det att om du av misstag avslutar spelet kommer det förhoppningsvis att förhindra att det dödas omedelbart om din enhet börjar ta slut gratis RAM. Tyvärr Fortnite riktar sig endast till SDK-nivå 21 vid denna tidpunkt (Android 5.0 Lollipop) så det drar tyvärr inte nytta av de senaste API: erna som Google erbjuder i Android Pie, än mindre Android Oreo, Android Nougat eller Android Marshmallow. Förhoppningsvis uppdateras andra spel för att dra nytta av den här funktionen. Till nästa år, Google kommer att kräva dem att uppdatera om de vill kunna fortsätta skicka uppdateringar i Google Play Butik.