Android Pie ruller ud i dag, og en af de fede skjulte funktioner er evnen til at forhindre RAM-tunge spil i at blive dræbt, hvis du ved et uheld afslutter.
Tidligere i dag Google officielt annonceret Android Pie til Google Pixel og Google Pixel 2. Umiddelbart derefter, Essential udgivet Android 9-opdateringen til Essential Phone. Andre enheder, der deltog i Android P beta-programmet skulle snart modtage opdateringen, så brugere, der sprang over Developer Previews, har nu meget at komme efter. Mens vi graver i den seneste udgivelse, inklusive kildekode drop på AOSP og det seneste Compatibility Definition Document (CDD), vil vi med jævne mellemrum opdatere dig med alle nye oplysninger, vi afslører. Noget interessant, vi fandt i CDD'en, er en sektion for "heavyweight" (RAM-tunge) apps og spil hvor Android Pie vil prioritere at holde disse apps i RAM, hvis brugeren ved et uheld forlader dem.
"Heavyweight" apps og spil i Android Pie
Et nyt afsnit er blevet tilføjet til CDD der skitserer denne funktion. Her er hvad der står:
3.17. Tunge apps
Hvis enhedsimplementeringer erklærer funktionen FEATURE_CANT_SAVE_STATE, så:
- [C-1-1] SKAL kun have én installeret app, der angiver, at cantSaveState kører i systemet ad gangen. Hvis brugeren forlader en sådan app uden eksplicit at forlade den (for eksempel ved at trykke på hjem, mens han forlader en aktiv aktivitet, er systemet i stedet for at trykke tilbage uden at være tilbage aktive aktiviteter i systemet), så SKAL enhedsimplementeringer prioritere den app i RAM, som de gør for andre ting, der forventes at forblive kørende, såsom forgrunden tjenester. Mens en sådan app er i baggrunden, kan systemet stadig anvende strømstyringsfunktioner på den, såsom begrænsning af CPU og netværksadgang.
- [C-1-2] SKAL give en UI-adfærd for at vælge den app, der ikke vil deltage i normalstate-gemme/gendan-mekanismen, når brugeren starter en anden app, der er erklæret medcantSaveState-attribut.
- [C-1-3] MÅ IKKE anvende andre ændringer i politik på apps, der specificerer cantSaveState, såsom ændring af CPU-ydeevne eller ændring af planlægningsprioritering.
Hvis enhedsimplementeringer ikke erklærer funktionen FEATURE_CANT_SAVE_STATE , så de:
- [C-1-1] SKAL ignorere cantSaveState-attributten, der er indstillet af apps, og MÅ IKKE ændre app-adfærden baseret på denne attribut.
Dybest set betyder det, at hvis en enhed understøtter FEATURE_CANT_SAVE_STATE funktion, så skal de prioritere at beholde den kørende app i RAM, der specificerer cantSaveState attribut. Denne RAM-prioritering træder i kraft, hvis brugeren forlader appen eller spillet ved at trykke på startknappen eller forlade appen eller spillet uden eksplicit at forlade den (som med et tryk på en tilbage-knap eller en quit-knap.) Desuden kan systemet stadig spare strøm ved at begrænse CPU- og netværksadgang på disse apps, men de kan bare ikke frigøre RAM ved at dræbe dem, medmindre det er nødvendig. Bemærk endelig, at kun én app med den definerede cantSaveState-attribut må køre. Hvis du forsøger at starte en anden app med denne egenskab defineret, mens en anden kører, vil Android Pie bede dig om at vælge, hvilket spil du vil fortsætte med at køre.
Du kan kontrollere, om din enhed understøtter FEATURE_CANT_SAVE_STATE ved at køre følgende to kommandoer via ADB:
adb shell
dumpsys package | grep "cant_save_state"
For at kontrollere, om en app specificerer cantSaveState-attributten, skal appen dekompileres og ses på dens manifest eller bruge dumpsys package package.name.here
kommando i ADB shell. Husk på, at denne egenskab kun lige blev tilføjet i API-niveau 28 (Android 9 Pie), så det er usandsynligt, at mange apps eller spil vil udnytte dette endnu.
Denne funktion vil være utrolig nyttig for enheder med små mængder RAM og/eller apps, der spiser et ton RAM. For eksempel Fortnite Mobile på Android kræver minimum 3 GB RAM på grund af hvor meget RAM den spiser (uden selv at starte et spil reserverede Fortnite Mobile 1,6 GB RAM på min Google Pixel 2 XL). Hvis Fortnite skulle målrette mod SDK niveau 28 og brug denne funktion, så betyder det, at en utilsigtet afslutning af spillet forhåbentlig forhindrer det i at blive dræbt med det samme, hvis din enhed er ved at løbe tør fri RAM. Desværre Fortnite er kun målrettet mod SDK-niveau 21 på nuværende tidspunkt (Android 5.0 Lollipop), så den udnytter desværre ikke de nyeste API'er, som Google tilbyder i Android Pie, endsige Android Oreo, Android Nougat eller Android Marshmallow. Forhåbentlig opdaterer andre spil for at drage fordel af denne funktion. Til næste år, Google vil kræve dem at opdatere, hvis de ønsker at kunne fortsætte med at indsende opdateringer i Google Play Butik.