Middle+
Πώς καθορίζεται η προτεραιότητα των εφαρμογών στο σύστημα;
sobes.tech AI
Απάντηση από AI
Η προτεραιότητα μιας εφαρμογής στο Android καθορίζεται βάσει πολλών παραγόντων, με τους κύριους να είναι:
- Δραστηριότητα του συστατικού: Μια εφαρμογή που έχει ενεργά συστατικά (δραστηριότητες σε πρώτο πλάνο, υπηρεσίες που ξεκινούν με
startForeground) έχει υψηλότερη προτεραιότητα. - Χρήση πόρων: Εφαρμογές που χρησιμοποιούν ενεργά CPU ή καταναλώνουν πολύ μνήμη μπορεί να σημειωθούν από το σύστημα ως λιγότερο προτεραιότητας, για να διατηρούν πόρους για πιο σημαντικές εργασίες.
- Αλληλεπίδραση με το περιβάλλον χρήστη: Εφαρμογές που αλληλεπιδρούν άμεσα με τον χρήστη αυτή τη στιγμή λαμβάνουν την υψηλότερη προτεραιότητα.
- Σύνδεση με διεργασίες υψηλότερης προτεραιότητας: Μια διεργασία στην οποία συνδέεται ένα συστατικό (π.χ. μια υπηρεσία που συνδέεται με μια δραστηριότητα) κληρονομεί την προτεραιότητα μιας διεργασίας υψηλότερης προτεραιότητας.
Το σύστημα Android χρησιμοποιεί αυτούς τους παράγοντες για να καθορίσει το "επίπεδο σημαντικότητας" (importance level) μιας εφαρμογής, που τελικά καθορίζει πόσο πιθανό είναι να τερματιστεί (σβηστεί) η διεργασία της σε περίπτωση έλλειψης μνήμης.
Βασικά επίπεδα σημαντικότητας διεργασιών:
- Διεργασία σε πρώτο πλάνο: Η πιο σημαντική διεργασία. Μια εφαρμογή με ορατή δραστηριότητα στην οθόνη, μια υπηρεσία που ξεκίνησε με
startForeground, ή που χρησιμοποιεί ορισμένες API (π.χ. σχετιζόμενη με άλλη δραστηριότητα σε πρώτο πλάνο). Ποτέ δεν τερματίζεται από το σύστημα, εκτός αν εξαντληθούν κρίσιμοι πόροι. - Ορατή διεργασία: Διεργασία που δεν έχει συστατικά σε πρώτο πλάνο, αλλά επηρεάζει αυτό που βλέπει ο χρήστης. Για παράδειγμα, μια διεργασία που περιέχει μια υπηρεσία που σχετίζεται με μια δραστηριότητα σε πρώτο πλάνο.
- Διεργασία υπηρεσίας: Διεργασία που περιέχει μια υπηρεσία που ξεκίνησε με
startServiceκαι δεν έχει χαρακτηριστεί ως υπηρεσία σε πρώτο πλάνο. Μπορεί να τερματιστεί όταν η έλλειψη μνήμης γίνει σοβαρή. - Διεργασία cache: Διεργασία χωρίς ενεργά συστατικά και αποθηκευμένη στη μνήμη για ταχύτερη επανεκκίνηση. Είναι η λιγότερο σημαντική διεργασία και ο πιο πιθανός υποψήφιος για τερματισμό σε περίπτωση έλλειψης μνήμης.