Android Pie doda funkcijo za preprečevanje uničenja iger, ki zahtevajo veliko RAM-a, če jih pomotoma zaprete

Android Pie se uvaja danes in ena od odličnih skritih funkcij je možnost, da preprečite, da bi igre, ki zahtevajo veliko RAM-a, prenehale delovati, če jih pomotoma zaprete.

Prej danes, Google uradno objavljeno Android Pie za Google Pixel in Google Pixel 2. Takoj zatem, Essential izdan posodobitev sistema Android 9 za Essential Phone. Druge naprave, ki so sodelovale v programu Android P beta bi moral kmalu prejeti posodobitev, tako da morajo uporabniki, ki so preskočili predoglede za razvijalce, zdaj še veliko nadoknaditi. Ko se poglobimo v najnovejšo izdajo, vključno z padec izvorne kode na AOSP in najnovejši dokument z opredelitvijo združljivosti (CDD), vas bomo redno posodabljali z vsemi novimi informacijami, ki jih odkrijemo. Nekaj ​​zanimivega, kar smo našli v CDD, je razdelek za "težke" (RAM-težke) aplikacije in igre pri čemer bo Android Pie prednostno obdržal te aplikacije v RAM-u, če bi jih uporabnik pomotoma zaprl njim.

"Težke" aplikacije in igre v Android Pie

Nov razdelek je bil dodan v CDD ki opisuje to funkcijo. Tukaj piše:

3.17. Težke aplikacije

Če implementacije naprave deklarirajo funkcijo FEATURE_CANT_SAVE_STATE, potem:

  • [C-1-1] MORA imeti samo eno nameščeno aplikacijo, ki določa, da se v sistemu hkrati izvaja cantSaveState. Če uporabnik zapusti takšno aplikacijo, ne da bi jo izrecno zapustil (na primer tako, da pritisne domov, medtem ko zapusti aktivno dejavnost sistem, namesto da pritisne nazaj, ne da bi ostalo aktivne dejavnosti v sistemu), potem izvedbe naprav MORAJO dati prednost tej aplikaciji v RAM-u, kot to počnejo za druge stvari, za katere se pričakuje, da bodo še naprej delovale, kot je ospredje storitve. Medtem ko je taka aplikacija v ozadju, lahko sistem zanjo še vedno uporablja funkcije za upravljanje porabe energije, kot je omejevanje CPE in dostopa do omrežja.
  • [C-1-2] MORA zagotoviti možnost uporabniškega vmesnika za izbiro aplikacije, ki ne bo sodelovala v mehanizmu za shranjevanje/obnovitev normalnega stanja, ko uporabnik zažene drugo aplikacijo, deklarirano z atributom cantSaveState.
  • [C-1-3] NE SME uporabiti drugih sprememb pravilnika za aplikacije, ki določajo cantSaveState, na primer spreminjanje zmogljivosti procesorja ali spreminjanje prednostnega razporejanja.

Če izvedbe naprave ne deklarirajo funkcije FEATURE_CANT_SAVE_STATE , nato pa:

  • [C-1-1] MORA ignorirati atribut cantSaveState, ki ga nastavijo aplikacije, in NE SME spreminjati vedenja aplikacije na podlagi tega atributa.

V bistvu to pomeni, da če naprava podpira FEATURE_CANT_SAVE_STATE funkcijo, potem morajo dati prednost ohranjanju v RAM-u delujoče aplikacije, ki določa cantSaveState atribut. To določanje prednosti RAM-a se začne, če uporabnik zapusti aplikacijo ali igro s pritiskom na gumb Domov ali zapusti aplikacijo ali igro, ne da bi jo izrecno zaprl (na primer s pritiskom gumba za nazaj ali gumb za izhod.) Poleg tega lahko sistem še vedno varčuje z energijo tako, da omeji CPE in dostop do omrežja v teh aplikacijah, vendar preprosto ne morejo sprostiti RAM-a tako, da jih ubijejo, razen če je potrebno. Nazadnje upoštevajte, da se lahko izvaja samo ena aplikacija z definiranim atributom cantSaveState. Če poskušate zagnati drugo aplikacijo s tem atributom, definiranim med izvajanjem druge, vas bo Android Pie prosil, da izberete igro, ki jo želite še naprej izvajati.

Lahko preverite, ali vaša naprava podpira FEATURE_CANT_SAVE_STATE, tako da zaženete naslednja dva ukaza prek ADB:

adb shell
dumpsys package | grep "cant_save_state"

Če želite preveriti, ali aplikacija podaja atribut cantSaveState, boste morali dekompilirati aplikacijo in pogledati njen manifest ali uporabiti dumpsys package package.name.here ukaz v lupini ADB. Ne pozabite, da je bil ta atribut pravkar dodan na ravni API-ja 28 (Android 9 Pie), zato je malo verjetno, da bo veliko aplikacij ali iger to še izkoristilo.

Ta funkcija bo izjemno uporabna za naprave z majhno količino RAM-a in/ali aplikacije, ki porabijo ogromno RAM-a. Na primer Fortnite Mobile v sistemu Android zahteva najmanj 3 GB RAM-a zaradi tega, koliko RAM-a porabi (ne da bi sploh zagnal igro, je Fortnite Mobile rezerviral 1,6 GB RAM-a na mojem Google Pixel 2 XL.) Če bi Fortnite ciljal na SDK ravni 28 in uporabite to funkcijo, potem to pomeni, da boste z nenamernim izhodom iz igre preprečili, da bi bila takoj ukinjena, če je naprava skoraj prazna prosti RAM. Na žalost, Fortnite cilja samo na raven SDK 21 trenutno (Android 5.0 Lollipop), tako da žal ne izkorišča prednosti najnovejših API-jev, ki jih Google ponuja v sistemu Android Pie, kaj šele v sistemu Android Oreo, Android Nougat ali Android Marshmallow. Upajmo, da bodo druge igre posodobljene, da bodo izkoristile to funkcijo. Do naslednjega leta, Google jih bo zahteval za posodobitev, če želijo še naprej pošiljati posodobitve v Trgovino Google Play.