Android Pie è in arrivo oggi e una delle fantastiche funzionalità nascoste è la capacità di impedire che i giochi che richiedono molta RAM vengano uccisi se esci accidentalmente.
Oggi, Google annunciato ufficialmente Android Pie per Google Pixel e Google Pixel 2. Subito dopo, Essenziale rilasciato l'aggiornamento Android 9 per Essential Phone. Altri dispositivi che hanno partecipato nel programma beta di Android P dovrebbe presto ricevere l'aggiornamento, quindi gli utenti che hanno saltato le anteprime per sviluppatori ora avranno molto da recuperare. Mentre approfondiamo l'ultima versione, incluso il rilascio del codice sorgente su AOSP e l'ultimo documento di definizione della compatibilità (CDD), ti aggiorneremo periodicamente con tutte le nuove informazioni che scopriremo. Qualcosa di interessante che abbiamo trovato nel CDD è una sezione per app e giochi "pesanti" (con molta RAM) in cui Android Pie darà la priorità al mantenimento di queste app nella RAM nel caso in cui l'utente esca accidentalmente loro.
App e giochi "pesanti" in Android Pie
È stata aggiunta una nuova sezione al CDD che delinea questa caratteristica. Ecco cosa dice:
3.17. App pesanti
Se le implementazioni del dispositivo dichiarano la funzionalità FEATURE_CANT_SAVE_STATE, allora:
- [C-1-1] DEVE avere una sola app installata alla volta che specifica cantSaveState in esecuzione nel sistema. Se l'utente lascia un'app di questo tipo senza uscirne esplicitamente (ad esempio premendo Home mentre si lascia un'attività attiva, il sistema, invece di premere Indietro senza rimanere attività attive nel sistema), quindi le implementazioni del dispositivo DEVONO dare priorità a quell'app nella RAM come fanno per altre cose che dovrebbero rimanere in esecuzione, come il primo piano Servizi. Mentre un'app di questo tipo è in background, il sistema può comunque applicarvi funzionalità di gestione dell'alimentazione, come limitare l'accesso alla CPU e alla rete.
- [C-1-2] DEVE fornire un'interfaccia utente per scegliere l'app che non parteciperà al meccanismo di salvataggio/ripristino dello stato normale una volta che l'utente avvia una seconda app dichiarata con l'attributo cantSaveState.
- [C-1-3] NON DEVE applicare altre modifiche alla policy alle app che specificano cantSaveState, come la modifica delle prestazioni della CPU o la modifica della priorità di pianificazione.
Se le implementazioni del dispositivo non dichiarano la funzionalità FEATURE_CANT_SAVE_STATE , Allora loro:
- [C-1-1] DEVE ignorare l'attributo cantSaveState impostato dalle app e NON DEVE modificare il comportamento dell'app in base a tale attributo.
Fondamentalmente ciò significa che, se un dispositivo supporta il FEATURE_CANT_SAVE_STATE funzionalità, quindi devono dare la priorità al mantenimento nella RAM dell'app in esecuzione che specifica il file cantSaveState attributo. Questa priorità della RAM si attiva se l'utente esce dall'app o dal gioco premendo il pulsante Home o abbandonando l'app o il gioco senza uscirne esplicitamente (come quando si preme il pulsante Indietro o un pulsante Esci.) Inoltre, il sistema può comunque risparmiare energia limitando l'accesso alla CPU e alla rete su tali app, ma non può semplicemente liberare RAM uccidendole a meno che non sia necessario. Infine, tieni presente che è consentita l'esecuzione di una sola app con l'attributo cantSaveState definito. Se tenti di avviare un'altra app con questo attributo definito mentre un'altra è in esecuzione, Android Pie ti chiederà di scegliere quale gioco desideri continuare a eseguire.
Puoi verificare se il tuo dispositivo supporta FEATURE_CANT_SAVE_STATE eseguendo i due comandi seguenti tramite ADB:
adb shell
dumpsys package | grep "cant_save_state"
Per verificare se un'app specifica l'attributo cantSaveState sarà necessario decompilare l'app e osservare il suo manifest o utilizzare l'attributo dumpsys package package.name.here
comando nella shell ADB. Tieni presente che questo attributo è stato appena aggiunto nel livello API 28 (Android 9 Pie), quindi è improbabile che molte app o giochi ne traggano vantaggio.
Questa funzionalità sarà incredibilmente utile per i dispositivi con piccole quantità di RAM e/o app che consumano moltissima RAM. Ad esempio, Fortnite Mobile su Android richiede un minimo di 3 GB di RAM a causa della quantità di RAM che consuma (senza nemmeno avviare un gioco, Fortnite Mobile stava riservando 1,6 GB di RAM sul mio Google Pixel 2 XL.) Se Fortnite avesse preso di mira l'SDK livello 28 e usi questa funzione, ciò significa che l'uscita accidentale dal gioco, si spera, impedirà che venga ucciso immediatamente se il tuo dispositivo sta per esaurirsi RAM libera. Sfortunatamente, Fortnite ha come target solo il livello SDK 21 al momento (Android 5.0 Lollipop), quindi purtroppo non sfrutta le ultime API offerte da Google in Android Pie, per non parlare di Android Oreo, Android Nougat o Android Marshmallow. Si spera che altri giochi si aggiornino per sfruttare questa funzionalità. Entro il prossimo anno, Google li richiederanno aggiornare se desiderano poter continuare a inviare aggiornamenti sul Google Play Store.