Intern
Ποια είναι η διαφορά μεταξύ μιας υπηρεσίας φόντου και μιας υπηρεσίας φόντου στο Android;
sobes.tech AI
Απάντηση από AI
Η διαφορά μεταξύ μιας κανονικής υπηρεσίας φόντου και μιας περιορισμένης (restricted) υπηρεσίας φόντου εμφανίστηκε με το Android 8.0 (API 26).
Κανονική υπηρεσία φόντου:
- Μπορεί να λειτουργεί απεριόριστα στο παρασκήνιο.
- Το σύστημα μπορεί να την τερματίσει σε περίπτωση έλλειψης πόρων, αλλά μπορεί να επανεκκινηθεί αν επιστραφεί
START_STICKYστοonStartCommand(). - Δεν απαιτεί ορατές ειδοποιήσεις για τον χρήστη (αν και αυτό δεν είναι η καλύτερη πρακτική από UX άποψη).
- Μπορεί να καταναλώνει σημαντικούς πόρους μπαταρίας και CPU.
Περιορισμένη υπηρεσία φόντου (εφαρμόζονται περιορισμοί):
- Μια υπηρεσία που ξεκινάει στο παρασκήνιο χωρίς ορατές δραστηριότητες ή άλλες "λευκές λίστες" (προνόμια) αντιμετωπίζει περιορισμούς στη χρήση πόρων.
- Οι κύριοι περιορισμοί περιλαμβάνουν:
- Περιορισμό στη λειτουργία στο παρασκήνιο: Το σύστημα μπορεί να σταματήσει την υπηρεσία σε σύντομο χρονικό διάστημα (συνήθως λίγα λεπτά) μετά τη μετάβαση της εφαρμογής σε παρασκήνιο.
- Απαγόρευση εκκίνησης νέων υπηρεσιών φόντου: Μια εφαρμογή στο παρασκήνιο δεν μπορεί να ξεκινήσει νέες υπηρεσίες φόντου με
startService(). Αντίθετα, πρέπει να χρησιμοποιείJobSchedulerήWorkManager. - Περιορισμός στη λήψη ευρείας μετάδοσης μηνυμάτων: Τα έμμεσα broadcast (implicit broadcasts) στο μανιφέστο θα αγνοούνται. Η εφαρμογή πρέπει να καταχωρεί ρητά δέκτες broadcast ή να χρησιμοποιεί
JobScheduler/WorkManagerγια την επεξεργασία γεγονότων.
- Στόχος αυτών των περιορισμών είναι η βελτίωση της διάρκειας ζωής της μπαταρίας και της απόδοσης της συσκευής, περιορίζοντας την άσκοπη χρήση πόρων από εφαρμογές στο παρασκήνιο.
Πώς μια υπηρεσία γίνεται μη περιορισμένη (ενεργή στα μάτια του συστήματος):
- Η εφαρμογή βρίσκεται σε πρώτο πλάνο (ο χρήστης αλληλεπιδρά ενεργά με αυτήν).
- Η εφαρμογή ξεκινά μια ορατή υπηρεσία (foreground service), η οποία εμφανίζει μια διαρκή ειδοποίηση στον χρήστη.
- Η εφαρμογή εκτελεί συγκεκριμένες εργασίες (π.χ., επεξεργασία ευρείας μετάδοσης μηνυμάτων, εκτέλεση εργασιών
JobScheduler), που την απομακρύνουν προσωρινά από την κατάσταση πλήρους άσκοπης εργασίας στο παρασκήνιο.
Βασική διαφορά: Με το Android 8.0 και νεότερες εκδόσεις, μια υπηρεσία που λειτουργεί στο παρασκήνιο χωρίς ορατή δραστηριότητα χρήστη ή ορατή υπηρεσία θα είναι περιορισμένη από το σύστημα όσον αφορά την πρόσβαση σε πόρους και τη δυνατότητα μακροχρόνιας λειτουργίας.