Android Pie voegt een functie toe om te voorkomen dat games met veel RAM worden gedood als je per ongeluk afsluit

click fraud protection

Android Pie wordt vandaag uitgerold en een van de coole verborgen functies is de mogelijkheid om te voorkomen dat games met veel RAM worden gedood als je per ongeluk afsluit.

Eerder vandaag Google officieel aangekondigd Android Pie voor de Google Pixel en Google Pixel 2. Onmiddellijk daarna, Essentieel vrijgegeven de Android 9-update voor de Essential Phone. Andere apparaten die deelnamen in het Android P-bètaprogramma zou de update binnenkort moeten ontvangen, dus gebruikers die de Developer Previews hebben overgeslagen, hebben nu een flinke inhaalslag te maken. Terwijl we dieper ingaan op de nieuwste release, inclusief de broncode droppen op AOSP en het nieuwste Compatibility Definition Document (CDD), zullen we u periodiek op de hoogte houden van alle nieuwe informatie die we ontdekken. Iets interessants dat we in de CDD hebben gevonden, is een sectie voor "zware" (RAM-zware) apps en games waarin Android Pie prioriteit zal geven aan het behouden van deze apps in het RAM-geheugen als de gebruiker per ongeluk afsluit hen.

"Zwaargewicht" apps en games in Android Pie

Er is een nieuwe sectie toegevoegd aan de CDD dat deze functie schetst. Dit is wat er staat:

3.17. Zwaargewicht apps

Als apparaatimplementaties de functie FEATURE_CANT_SAVE_STATE declareren, dan:

  • [C-1-1] MOET slechts één geïnstalleerde app tegelijk hebben die cantSaveState specificeert in het systeem. Als de gebruiker een dergelijke app verlaat zonder deze expliciet af te sluiten (bijvoorbeeld door op Home te drukken terwijl hij een actieve activiteit verlaat, zal het systeem in plaats van terug te drukken zonder enige resterende actieve activiteiten in het systeem), dan MOETEN apparaatimplementaties prioriteit geven aan die app in het RAM, net zoals ze doen voor andere dingen waarvan verwacht wordt dat ze actief blijven, zoals voorgrond Diensten. Hoewel zo'n app zich op de achtergrond bevindt, kan het systeem er nog steeds energiebeheerfuncties op toepassen, zoals het beperken van de CPU- en netwerktoegang.
  • [C-1-2] MOET een UI-mogelijkheid bieden om de app te kiezen die niet deelneemt aan het normale opslag-/herstelmechanisme zodra de gebruiker een tweede app start die is gedeclareerd met het kenmerk cantSaveState.
  • [C-1-3] MOET GEEN andere beleidswijzigingen toepassen op apps die cantSaveState specificeren, zoals het wijzigen van de CPU-prestaties of het wijzigen van de planningsprioriteit.

Als apparaatimplementaties de functie niet declareren FEATURE_CANT_SAVE_STATE , toen... ze:

  • [C-1-1] MOET het cantSaveState-attribuut dat door apps is ingesteld negeren en MOET het app-gedrag NIET wijzigen op basis van dat attribuut.

Kort gezegd betekent dit dat, als een apparaat de FEATURE_CANT_SAVE_STATE functie, dan moeten ze prioriteit geven aan het in het RAM houden van de actieve app die de kan nietSaveState attribuut. Deze RAM-prioriteit wordt geactiveerd als de gebruiker de app of game afsluit door op de startknop te drukken of de app of game verlaat zonder deze expliciet af te sluiten (zoals wanneer u op de terugknop drukt of een stopknop.) Bovendien kan het systeem nog steeds energie besparen door de CPU- en netwerktoegang tot die apps te beperken, maar ze kunnen gewoon geen RAM vrijmaken door ze te beëindigen, tenzij dit nodig is. nodig. Houd er ten slotte rekening mee dat slechts één app met het gedefinieerde cantSaveState-attribuut mag worden uitgevoerd. Als u probeert een andere app te starten waarbij dit kenmerk is gedefinieerd terwijl een andere app actief is, zal Android Pie u vragen welk spel u wilt blijven gebruiken.

U kunt controleren of uw apparaat FEATURE_CANT_SAVE_STATE ondersteunt door de volgende twee opdrachten uit te voeren via ADB:

adb shell
dumpsys package | grep "cant_save_state"

Om te controleren of een app het cantSaveState-attribuut specificeert, moet de app worden gedecompileerd en naar het manifest worden gekeken of de dumpsys package package.name.here opdracht in ADB-shell. Houd er rekening mee dat dit kenmerk nog maar net is toegevoegd in API-niveau 28 (Android 9 Pie), dus het is onwaarschijnlijk dat veel apps of games hiervan al zullen profiteren.

Deze functie zal ongelooflijk handig zijn voor apparaten met kleine hoeveelheden RAM en/of apps die veel RAM in beslag nemen. Bijvoorbeeld Fortnite Mobile op Android vereist minimaal 3 GB RAM vanwege de hoeveelheid RAM die het opslokt (zonder zelfs maar een game te starten, reserveerde Fortnite Mobile 1,6 GB RAM op mijn Google Pixel 2 XL.) Als Fortnite de SDK zou targeten niveau 28 en gebruik deze functie, dan betekent dit dat het per ongeluk afsluiten van het spel hopelijk zal voorkomen dat het onmiddellijk wordt beëindigd als je apparaat bijna leeg is gratis RAM-geheugen. Helaas Fortnite richt zich alleen op SDK-niveau 21 op dit moment (Android 5.0 Lollipop), dus het profiteert helaas niet van de nieuwste API's die Google aanbiedt in Android Pie, laat staan ​​Android Oreo, Android Nougat of Android Marshmallow. Hopelijk worden andere games bijgewerkt om van deze functie te profiteren. Volgend jaar, Google zal ze nodig hebben om te updaten als ze updates willen blijven indienen in de Google Play Store.