Το Android Pie κυκλοφορεί σήμερα και ένα από τα εντυπωσιακά κρυφά χαρακτηριστικά είναι η δυνατότητα αποτροπής του θανάτου παιχνιδιών με μεγάλη μνήμη RAM, εάν βγείτε κατά λάθος.
Νωρίτερα σήμερα, η Google ανακοινώθηκε επίσημα Android Pie για το Google Pixel και το Google Pixel 2. Αμέσως μετά, Το Essential κυκλοφόρησε την ενημέρωση Android 9 για το Essential Phone. Άλλες συσκευές που συμμετείχαν στο πρόγραμμα Android P beta θα λάβουν σύντομα την ενημέρωση, επομένως οι χρήστες που παρέλειψαν τις Προεπισκοπήσεις προγραμματιστών έχουν τώρα πολλά να καλύψουν τη διαφορά. Καθώς εξετάζουμε την τελευταία έκδοση, συμπεριλαμβανομένου του πτώση πηγαίου κώδικα στο AOSP και το πιο πρόσφατο Έγγραφο Ορισμού Συμβατότητας (CDD), θα σας ενημερώνουμε περιοδικά για κάθε νέα πληροφορία που αποκαλύπτουμε. Κάτι ενδιαφέρον που βρήκαμε στο CDD είναι μια ενότητα για εφαρμογές και παιχνίδια "βαρέων βαρών" (RAM-heavy) όπου το Android Pie θα δώσει προτεραιότητα στη διατήρηση αυτών των εφαρμογών στη μνήμη RAM σε περίπτωση που ο χρήστης εξέλθει κατά λάθος τους.
Εφαρμογές και παιχνίδια "βαρέων βαρών" στο Android Pie
Μια νέα ενότητα προστέθηκε στο CDD που περιγράφει αυτό το χαρακτηριστικό. Να τι λέει:
3.17. Εφαρμογές βαρέων βαρών
Εάν οι υλοποιήσεις συσκευών δηλώνουν τη δυνατότητα FEATURE_CANT_SAVE_STATE, τότε:
- [C-1-1] ΠΡΕΠΕΙ να έχει μόνο μία εγκατεστημένη εφαρμογή που καθορίζει το cantSaveState να εκτελείται στο σύστημα κάθε φορά. Εάν ο χρήστης εγκαταλείψει μια τέτοια εφαρμογή χωρίς ρητή έξοδο από αυτήν (για παράδειγμα πατώντας το σπίτι ενώ αφήνει μια ενεργή δραστηριότητα το σύστημα, αντί να πατήσει πίσω χωρίς να απομένει ενεργές δραστηριότητες στο σύστημα), στη συνέχεια οι υλοποιήσεις της συσκευής ΠΡΕΠΕΙ να δώσουν προτεραιότητα σε αυτήν την εφαρμογή στη μνήμη RAM όπως κάνουν για άλλα πράγματα που αναμένεται να συνεχίσουν να εκτελούνται, όπως το προσκήνιο Υπηρεσίες. Ενώ μια τέτοια εφαρμογή βρίσκεται στο παρασκήνιο, το σύστημα μπορεί να εφαρμόσει λειτουργίες διαχείρισης ενέργειας σε αυτήν, όπως τον περιορισμό της πρόσβασης CPU και δικτύου.
- [C-1-2] ΠΡΕΠΕΙ να παρέχει μια δυνατότητα διεπαφής χρήστη για να επιλέξετε την εφαρμογή που δεν θα συμμετέχει στον μηχανισμό αποθήκευσης/επαναφοράς της κανονικής κατάστασης μόλις ο χρήστης εκκινήσει μια δεύτερη εφαρμογή που έχει δηλωθεί ως χαρακτηριστικό withcantSaveState.
- [C-1-3] ΔΕΝ ΠΡΕΠΕΙ να εφαρμόζονται άλλες αλλαγές στην πολιτική σε εφαρμογές που καθορίζουν το cantSaveState, όπως αλλαγή της απόδοσης της CPU ή αλλαγή της προτεραιότητας προγραμματισμού.
Εάν οι υλοποιήσεις της συσκευής δεν δηλώνουν τη δυνατότητα FEATURE_CANT_SAVE_STATE , Τότε αυτοί:
- [C-1-1] ΠΡΕΠΕΙ να αγνοήσει το χαρακτηριστικό cantSaveState που έχει οριστεί από τις εφαρμογές και ΔΕΝ ΠΡΕΠΕΙ να αλλάξει τη συμπεριφορά εφαρμογής με βάση αυτό το χαρακτηριστικό.
Βασικά, αυτό σημαίνει ότι, εάν μια συσκευή υποστηρίζει το FEATURE_CANT_SAVE_STATE χαρακτηριστικό, τότε πρέπει να δώσουν προτεραιότητα στη διατήρηση στη μνήμη RAM της εκτελούμενης εφαρμογής που καθορίζει το cantSaveState Χαρακτηριστικό. Αυτή η ιεράρχηση RAM ξεκινά εάν ο χρήστης βγαίνει από την εφαρμογή ή το παιχνίδι πατώντας το κουμπί αρχικής οθόνης ή αφήνοντας την εφαρμογή ή το παιχνίδι χωρίς ρητή έξοδο (όπως με το πάτημα του κουμπιού επιστροφής ή ένα κουμπί τερματισμού.) Επιπλέον, το σύστημα μπορεί ακόμα να εξοικονομήσει ενέργεια περιορίζοντας την πρόσβαση της CPU και του δικτύου σε αυτές τις εφαρμογές, αλλά απλώς δεν μπορούν να ελευθερώσουν τη μνήμη RAM σκοτώνοντάς τις, εκτός εάν απαραίτητη. Τέλος, σημειώστε ότι επιτρέπεται να εκτελείται μόνο μία εφαρμογή με καθορισμένο χαρακτηριστικό cantSaveState. Εάν επιχειρήσετε να εκκινήσετε μια άλλη εφαρμογή με αυτό το χαρακτηριστικό καθορισμένο ενώ μια άλλη εκτελείται, το Android Pie θα σας ζητήσει να επιλέξετε ποιο παιχνίδι θέλετε να συνεχίσετε να εκτελείται.
Μπορείτε να ελέγξετε εάν η συσκευή σας υποστηρίζει FEATURE_CANT_SAVE_STATE εκτελώντας τις ακόλουθες δύο εντολές μέσω ADB:
adb shell
dumpsys package | grep "cant_save_state"
Για να ελέγξετε εάν μια εφαρμογή καθορίζει το χαρακτηριστικό cantSaveState, θα χρειαστεί να απομεταγλωττίσετε την εφαρμογή και να δείτε το μανιφέστο της ή να χρησιμοποιήσετε το dumpsys package package.name.here
εντολή στο κέλυφος ADB. Λάβετε υπόψη ότι αυτό το χαρακτηριστικό προστέθηκε μόλις στο επίπεδο API 28 (Android 9 Pie), επομένως είναι απίθανο πολλές εφαρμογές ή παιχνίδια να το εκμεταλλευτούν ακόμα.
Αυτή η δυνατότητα θα είναι απίστευτα χρήσιμη για συσκευές με μικρές ποσότητες RAM ή/και εφαρμογές που καταναλώνουν έναν τόνο RAM. Για παράδειγμα, Fortnite Mobile σε Android απαιτεί τουλάχιστον 3 GB μνήμης RAM λόγω της ποσότητας RAM που τρώει (χωρίς καν να ξεκινήσει ένα παιχνίδι, το Fortnite Mobile κρατούσε 1,6 GB RAM στο Google Pixel 2 XL μου.) Εάν το Fortnite στόχευε το SDK επίπεδο 28 και χρησιμοποιήστε αυτήν τη δυνατότητα, τότε αυτό σημαίνει ότι η κατά λάθος έξοδος από το παιχνίδι ελπίζουμε ότι θα αποτρέψει την άμεση θανάτωση του εάν η συσκευή σας εξαντλείται δωρεάν RAM. Δυστυχώς, Fortnite στοχεύει μόνο το επίπεδο 21 SDK αυτή τη στιγμή (Android 5.0 Lollipop), οπότε δυστυχώς δεν εκμεταλλεύεται τα πιο πρόσφατα API που προσφέρει η Google στο Android Pie, πόσο μάλλον το Android Oreo, το Android Nougat ή το Android Marshmallow. Ας ελπίσουμε ότι άλλα παιχνίδια ενημερώνονται για να επωφεληθούν από αυτήν τη δυνατότητα. Μέχρι το επόμενο έτος, η Google θα τα απαιτήσει για ενημέρωση εάν θέλουν να μπορούν να συνεχίσουν να υποβάλλουν ενημερώσεις στο Google Play Store.