Android Pie kommt heute auf den Markt und eine der coolen versteckten Funktionen ist die Möglichkeit, zu verhindern, dass RAM-intensive Spiele beendet werden, wenn Sie sie versehentlich beenden.
Heute früh, Google offiziell angekündigt Android Pie für Google Pixel und Google Pixel 2. Unmittelbar danach, Essential veröffentlicht das Android 9-Update für das Essential Phone. Andere Geräte, die teilgenommen haben im Beta-Programm von Android P dürfte das Update bald erhalten, sodass Benutzer, die die Developer Previews übersprungen haben, jetzt viel Nachholbedarf haben. Während wir uns mit der neuesten Version befassen, einschließlich der Quellcode-Drop auf AOSP und dem neuesten Compatibility Definition Document (CDD) informieren wir Sie regelmäßig über alle neuen Informationen, die wir entdecken. Etwas Interessantes, das wir im CDD gefunden haben, ist ein Abschnitt für „schwergewichtige“ (RAM-lastige) Apps und Spiele wobei Android Pie Priorität darauf legt, diese Apps im RAM zu belassen, falls der Benutzer versehentlich beendet wird ihnen.
„Schwergewichtige“ Apps und Spiele in Android Pie
Dem wurde ein neuer Abschnitt hinzugefügt CDD das diese Funktion umreißt. Hier ist, was es sagt:
3.17. Schwergewichtige Apps
Wenn Geräteimplementierungen die Funktion FEATURE_CANT_SAVE_STATE deklarieren, dann gilt Folgendes:
- [C-1-1] DARF jeweils nur eine installierte App im System ausgeführt werden, die „cantSaveState“ angibt. Wenn der Benutzer eine solche App verlässt, ohne sie explizit zu verlassen (z. B. durch Drücken der Home-Taste beim Verlassen einer aktiven Aktivität, wird das System nicht durch Drücken der Zurück-Taste gedrückt). aktive Aktivitäten im System), dann MÜSSEN Geräteimplementierungen dieser App im RAM Priorität einräumen, wie sie es auch für andere Dinge tun, von denen erwartet wird, dass sie weiterhin ausgeführt werden, wie z. B. den Vordergrund Dienstleistungen. Während eine solche App im Hintergrund ausgeführt wird, kann das System dennoch Energieverwaltungsfunktionen darauf anwenden, wie z. B. die Einschränkung des CPU- und Netzwerkzugriffs.
- [C-1-2] MUSS eine UI-Funktion bereitstellen, um die App auszuwählen, die nicht am normalen Speicher-/Wiederherstellungsmechanismus teilnimmt, sobald der Benutzer eine zweite App startet, die mit dem Attribut „cantSaveState“ deklariert ist.
- [C-1-3] DÜRFEN KEINE anderen Richtlinienänderungen auf Apps anwenden, die cantSaveState angeben, wie z. B. die Änderung der CPU-Leistung oder die Änderung der Planungspriorisierung.
Wenn Geräteimplementierungen die Funktion nicht deklarieren FEATURE_CANT_SAVE_STATE , dann werden sie:
- [C-1-1] MUSS das von Apps festgelegte Attribut „cantSaveState“ ignorieren und DARF das App-Verhalten basierend auf diesem Attribut NICHT ändern.
Im Wesentlichen bedeutet dies, dass, wenn ein Gerät das unterstützt FEATURE_CANT_SAVE_STATE Funktion, dann müssen sie priorisieren, dass die laufende App, die das angibt, im RAM bleibt cantSaveState Attribut. Diese RAM-Priorisierung tritt ein, wenn der Benutzer die App oder das Spiel verlässt, indem er die Home-Taste drückt oder die App oder das Spiel verlässt, ohne sie explizit zu beenden (z. B. durch Drücken der Zurück-Taste). oder eine Schaltfläche zum Beenden.) Darüber hinaus kann das System immer noch Strom sparen, indem es den CPU- und Netzwerkzugriff auf diese Apps einschränkt, aber es kann einfach keinen RAM freigeben, indem es sie beendet, es sei denn, dies ist der Fall notwendig. Beachten Sie abschließend, dass nur eine App mit definiertem cantSaveState-Attribut ausgeführt werden darf. Wenn Sie versuchen, eine andere App mit diesem Attribut zu starten, während eine andere ausgeführt wird, werden Sie von Android Pie aufgefordert, auszuwählen, welches Spiel Sie weiterhin ausführen möchten.
Sie können überprüfen, ob Ihr Gerät FEATURE_CANT_SAVE_STATE unterstützt, indem Sie die folgenden beiden Befehle über ADB ausführen:
adb shell
dumpsys package | grep "cant_save_state"
Um zu überprüfen, ob eine App das Attribut „cantSaveState“ angibt, müssen Sie die App dekompilieren und sich ihr Manifest ansehen oder das verwenden dumpsys package package.name.here
Befehl in der ADB-Shell. Bedenken Sie, dass dieses Attribut gerade erst in API-Level 28 (Android 9 Pie) hinzugefügt wurde, sodass es unwahrscheinlich ist, dass viele Apps oder Spiele davon schon jetzt profitieren werden.
Diese Funktion ist äußerst nützlich für Geräte mit wenig RAM und/oder Apps, die viel RAM verbrauchen. Zum Beispiel Fortnite Mobile auf Android erfordert mindestens 3 GB RAM Aufgrund des hohen RAM-Verbrauchs (ohne überhaupt ein Spiel zu starten, reservierte Fortnite Mobile 1,6 GB RAM auf meinem Google Pixel 2 XL.) Wenn Fortnite auf das SDK abzielen würde Wenn Sie Level 28 erreichen und diese Funktion nutzen, bedeutet dies, dass ein versehentliches Beenden des Spiels hoffentlich verhindert, dass es sofort beendet wird, wenn der Akku Ihres Geräts zur Neige geht freier RAM. Leider Fortnite zielt nur auf SDK-Level 21 ab derzeit (Android 5.0 Lollipop) und nutzt daher leider nicht die neuesten APIs, die Google in Android Pie anbietet, geschweige denn Android Oreo, Android Nougat oder Android Marshmallow. Hoffentlich werden andere Spiele aktualisiert, um diese Funktion nutzen zu können. Bis zum nächsten Jahr, Google werde sie benötigen aktualisieren, wenn sie weiterhin Updates im Google Play Store einreichen möchten.