Android Pie legger til funksjon for å forhindre å drepe RAM-tunge spill hvis du avslutter ved et uhell

Android Pie rulles ut i dag, og en av de kule skjulte funksjonene er muligheten til å forhindre at RAM-tunge spill blir drept hvis du avslutter ved et uhell.

Tidligere i dag Google offisielt annonsert Android Pie for Google Pixel og Google Pixel 2. Umiddelbart etterpå, Essential utgitt Android 9-oppdateringen for Essential Phone. Andre enheter som deltok i Android P betaprogrammet bør snart motta oppdateringen, så brukere som hoppet over utviklerforhåndsvisningene har nå mye å ta igjen. Når vi graver i den siste utgivelsen, inkludert kildekodefall på AOSP og det siste kompatibilitetsdefinisjonsdokumentet (CDD), vil vi med jevne mellomrom oppdatere deg med all ny informasjon vi avdekker. Noe interessant vi fant i CDD er en seksjon for "heavyweight" (RAM-tunge) apper og spill der Android Pie vil prioritere å holde disse appene i RAM hvis brukeren ved et uhell går ut dem.

"Tungvekts" apper og spill i Android Pie

En ny seksjon er lagt til CDD som skisserer denne funksjonen. Her er hva det står:

3.17. Tungvektsapper

Hvis enhetsimplementeringer erklærer funksjonen FEATURE_CANT_SAVE_STATE, vil de:

  • [C-1-1] MÅ bare ha én installert app som spesifiserer cantSaveState som kjører i systemet om gangen. Hvis brukeren forlater en slik app uten eksplisitt å gå ut av den (for eksempel ved å trykke hjem mens han forlater en aktiv aktivitet, i stedet for å trykke tilbake uten å gjenværende aktive aktiviteter i systemet), så MÅ enhetsimplementeringer prioritere den appen i RAM som de gjør for andre ting som forventes å fortsette å kjøre, for eksempel forgrunnen tjenester. Mens en slik app er i bakgrunnen, kan systemet fortsatt bruke strømstyringsfunksjoner på den, som å begrense CPU- og nettverkstilgang.
  • [C-1-2] MÅ gi brukergrensesnitt-tilskudd for å velge appen som ikke vil delta i normalstate-lagrings-/gjenopprettingsmekanismen når brukeren starter en andre app erklært withcantSaveState-attributtet.
  • [C-1-3] MÅ IKKE bruke andre endringer i policyen på apper som spesifiserer cantSaveState, for eksempel endring av CPU-ytelse eller endring av planleggingsprioritering.

Hvis enhetsimplementeringer ikke erklærer funksjonen FEATURE_CANT_SAVE_STATE , så de:

  • [C-1-1] MÅ ignorere cantSaveState-attributtet satt av apper og MÅ IKKE endre app-atferden basert på det attributtet.

I utgangspunktet betyr dette at hvis en enhet støtter FEATURE_CANT_SAVE_STATE funksjonen, så må de prioritere å beholde den kjørende appen i RAM som spesifiserer cantSaveState Egenskap. Denne RAM-prioriteringen starter hvis brukeren går ut av appen eller spillet ved å trykke på hjem-knappen eller forlate appen eller spillet uten eksplisitt å gå ut av det (som med et tilbake-knapptrykk eller en avslutt-knapp.) Videre kan systemet fortsatt spare strøm ved å begrense CPU- og nettverkstilgang på disse appene, men de kan bare ikke frigjøre RAM ved å drepe dem med mindre det er nødvendig. Til slutt, merk at bare én app med cantSaveState-attributtet definert er tillatt å kjøre. Hvis du prøver å starte en annen app med dette attributtet definert mens en annen kjører, vil Android Pie be deg velge hvilket spill du vil fortsette å kjøre.

Du kan sjekke om enheten din støtter FEATURE_CANT_SAVE_STATE ved å kjøre følgende to kommandoer via ADB:

adb shell
dumpsys package | grep "cant_save_state"

For å sjekke om en app spesifiserer cantSaveState-attributtet, må du dekompilere appen og se på manifestet eller bruke dumpsys package package.name.here kommando i ADB-skall. Husk at dette attributtet nettopp ble lagt til i API-nivå 28 (Android 9 Pie), så det er usannsynlig at mange apper eller spill vil dra nytte av dette ennå.

Denne funksjonen vil være utrolig nyttig for enheter med små mengder RAM og/eller apper som spiser opp massevis av RAM. For eksempel Fortnite Mobile på Android krever minimum 3 GB RAM på grunn av hvor mye RAM den spiser opp (uten engang å starte et spill, reserverte Fortnite Mobile 1,6 GB RAM på min Google Pixel 2 XL.) Hvis Fortnite skulle målrette mot SDK nivå 28 og bruk denne funksjonen, betyr dette at en utilsiktet avslutning av spillet vil forhåpentligvis forhindre at det blir drept umiddelbart hvis enheten din begynner å bli tom ledig RAM. Dessverre, Fortnite retter seg kun mot SDK-nivå 21 på dette tidspunktet (Android 5.0 Lollipop), så den drar dessverre ikke nytte av de nyeste APIene som Google tilbyr i Android Pie, enn si Android Oreo, Android Nougat eller Android Marshmallow. Forhåpentligvis oppdaterer andre spill for å dra nytte av denne funksjonen. Innen neste år, Google vil kreve dem for å oppdatere hvis de ønsker å kunne fortsette å sende inn oppdateringer i Google Play Store.