Android Pie pridáva funkciu, ktorá bráni zabíjaniu hier náročných na RAM, ak ich náhodou ukončíte

Android Pie sa dnes uvádza na trh a jednou zo skvelých skrytých funkcií je schopnosť zabrániť tomu, aby hry s veľkou pamäťou RAM boli zabité, ak ich náhodou ukončíte.

Dnes skôr, Google oficiálne oznámené Android Pie pre Google Pixel a Google Pixel 2. Hneď potom, Vydané Essential aktualizácia systému Android 9 pre telefón Essential Phone. Ďalšie zariadenia, ktoré sa zúčastnili v beta programe Android P by mala aktualizácia čoskoro dostať, takže používatelia, ktorí preskočili ukážky pre vývojárov, majú teraz čo doháňať. Keď sa ponoríme do najnovšieho vydania vrátane klesnutie zdrojového kódu na AOSP a najnovší dokument o definícii kompatibility (CDD), budeme vás pravidelne aktualizovať o všetky nové informácie, ktoré odhalíme. Niečo zaujímavé, čo sme našli v CDD, je sekcia pre aplikácie a hry „ťažkej váhy“ (vysoká RAM) pričom Android Pie bude uprednostňovať uchovávanie týchto aplikácií v pamäti RAM, ak by ju používateľ omylom ukončil ich.

Aplikácie a hry „ťažkej váhy“ v systéme Android Pie

Bola pridaná nová sekcia CDD ktorý opisuje túto vlastnosť. Tu je to, čo hovorí:

3.17. Aplikácie pre ťažkú ​​váhu

Ak implementácie zariadení deklarujú funkciu FEATURE_CANT_SAVE_STATE, potom:

  • [C-1-1] MUSÍ mať nainštalovanú iba jednu aplikáciu, ktorá špecifikuje cantSaveState spustenú v systéme súčasne. Ak používateľ opustí takúto aplikáciu bez toho, aby ju výslovne opustil (napríklad stlačením tlačidla Domov pri opustení aktívnej aktivity, systém namiesto stlačenia späť bez toho, aby aktívne aktivity v systéme), potom implementácie zariadenia MUSIA uprednostniť danú aplikáciu v pamäti RAM, ako to robia pri iných veciach, pri ktorých sa očakáva, že zostanú spustené, ako je popredie služby. Aj keď je takáto aplikácia na pozadí, systém na ňu môže stále používať funkcie správy napájania, ako je obmedzenie prístupu k procesoru a sieti.
  • [C-1-2] MUSÍ poskytnúť používateľské rozhranie na výber aplikácie, ktorá sa nebude podieľať na mechanizme ukladania/obnovy v normálnom stave, keď používateľ spustí druhú aplikáciu deklarovanú s atribútom cantSaveState.
  • [C-1-3] NESMIE aplikovať iné zmeny v politike na aplikácie, ktoré špecifikujú cantSaveState, ako je napríklad zmena výkonu CPU alebo zmena priority plánovania.

Ak implementácie zariadení túto funkciu nedeklarujú FEATURE_CANT_SAVE_STATE , potom oni:

  • [C-1-1] MUSÍ ignorovať atribút cantSaveState nastavený aplikáciami a NESMIE meniť správanie aplikácie na základe tohto atribútu.

V podstate to znamená, že ak zariadenie podporuje FEATURE_CANT_SAVE_STATE funkciu, potom musia uprednostniť uchovávanie spustenej aplikácie, ktorá špecifikuje v RAM cantSaveState atribút. Toto uprednostňovanie pamäte RAM sa spustí, ak používateľ ukončí aplikáciu alebo hru stlačením tlačidla Domov alebo opustí aplikáciu alebo hru bez toho, aby ju výslovne opustil (napríklad stlačením tlačidla Späť alebo tlačidlo ukončenia.) Okrem toho môže systém stále šetriť energiu obmedzením prístupu k procesoru a sieti v týchto aplikáciách, ale jednoducho nedokážu uvoľniť pamäť RAM ich zabitím, pokiaľ nevyhnutné. A nakoniec, všimnite si, že iba jedna aplikácia s definovaným atribútom cantSaveState môže byť spustená. Ak sa pokúsite spustiť inú aplikáciu s týmto atribútom, kým je spustená iná, Android Pie vás požiada, aby ste si vybrali hru, ktorú chcete spustiť.

Môžete skontrolovať, či vaše zariadenie podporuje FEATURE_CANT_SAVE_STATE spustením nasledujúcich dvoch príkazov cez ADB:

adb shell
dumpsys package | grep "cant_save_state"

Ak chcete skontrolovať, či aplikácia špecifikuje atribút cantSaveState, bude potrebné aplikáciu dekompilovať a pozrieť si jej manifest alebo použiť dumpsys package package.name.here príkaz v prostredí ADB. Majte na pamäti, že tento atribút bol práve pridaný v úrovni API 28 (Android 9 Pie), takže je nepravdepodobné, že by to mnohé aplikácie alebo hry ešte využili.

Táto funkcia bude neuveriteľne užitočná pre zariadenia s malým množstvom pamäte RAM a/alebo aplikácie, ktoré spotrebujú veľa pamäte RAM. Napríklad Fortnite Mobile pre Android vyžaduje minimálne 3 GB RAM kvôli tomu, koľko RAM zaberá (bez toho, aby som spustil hru, Fortnite Mobile rezervoval 1,6 GB RAM na mojom Google Pixel 2 XL.) Ak by Fortnite zacielil na SDK úroveň 28 a použite túto funkciu, potom to znamená, že náhodné opustenie hry, dúfajme, zabráni jej okamžitému zabitiu, ak sa vaše zariadenie vybíja voľná RAM. Bohužiaľ, Fortnite zacieľuje iba na súpravu SDK úrovne 21 v súčasnosti (Android 5.0 Lollipop), takže bohužiaľ nevyužíva najnovšie rozhrania API, ktoré Google ponúka v systéme Android Pie, nieto ešte Android Oreo, Android Nougat alebo Android Marshmallow. Dúfajme, že ďalšie hry sa aktualizujú, aby využili túto funkciu. Do budúceho roka Google bude ich vyžadovať aktualizovať, ak chcú pokračovať v odosielaní aktualizácií v Obchode Google Play.