Intern
Android-ში ფონური სერვისის და ფონური სერვისის შორის რა განსხვავებაა?
sobes.tech AI
პასუხი AI-სგან
Android 8.0 (API 26)-დან დაწყებული, ჩვეულებრივი ფონური სერვისისა და შეზღუდული (restricted) სერვისის შორის განსხვავება გამოჩნდა:
ჩვეულებრივი ფონური სერვისი:
- შეუძლია მუშაობა შეუზღუდავად ფონურ რეჟიმში.
- სისტემა შეიძლება გააჩეროს რესურსების ნაკლებობის დროს, მაგრამ შეიძლება ხელახლა დაიწყოს, თუ
onStartCommand()-ში დაბრუნდაSTART_STICKY. - არ მოითხოვს მომხმარებლისთვის ხილულ შეტყობინებებს (თუმცა ეს არ არის საუკეთესო პრაქტიკა UX-ის თვალსაზრისით).
- შეიძლება მოხმაროს მნიშვნელოვანი ბატარეის და CPU რესურსები.
შეზღუდული ფონური სერვისი (მიღება შეზღუდვები):
- სერვისი, რომელიც იწყება ფონურ რეჟიმში, როდესაც არ არის ხილული აქტივობები ან სხვა "თეთრი სია" (პრივილეგირებული პირობები), განიცდის რესურსების გამოყენების შეზღუდვებს.
- ძირითადი შეზღუდვები მოიცავს:
- ფონური მუშაობის შეზღუდვა: სერვისი შეიძლება შეჩერდეს სისტემამ მოკლე დროში (საშუალოდ რამდენიმე წუთი) შემდეგ, როდესაც აპლიკაცია გადადის ფონურ რეჟიმზე.
- შეზღუდვა ახალი ფონური სერვისების დაწყებაზე: ფონის აპლიკაცია არ შეუძლია ახალი სერვისების დაწყება
startService()-ის გამოყენებით. ამის ნაცვლად, უნდა გამოიყენოსJobSchedulerანWorkManager. - შეზღუდვა ბგეროვანი შეტყობინებების მიღებაზე: არაპირდაპირი ბგეროვანი შეტყობინებები (implicit broadcasts) მანიფესტში იგნორირებულია. აპლიკაციას უნდა ჰქონდეს პირდაპირი რეგისტრაცია ბგეროვანი მიმღებებისთვის ან გამოიყენოს
JobScheduler/WorkManager.
- ამ შეზღუდვების მიზანია ბატარეის ხანგრძლივობის და მოწყობილობის შესრულების გაუმჯობესება, შეზღუდვით არასათანადო რესურსების გამოყენება ფონურ აპლიკაციებზე.
როგორ ხდება სერვისი უქმდება შეზღუდულს (სისტემის თვალსაზრისით):
- აპლიკაცია მდებარეობს წინსაფარზე (მომხმარებელი აქტიურად ურთიერთობს მასთან).
- აპლიკაცია იწყებს ხილულ სერვისს (foreground service), რომელიც აჩვენებს მუდმივ შეტყობინებას მომხმარებელს.
- აპლიკაცია ასრულებს გარკვეულ დავალებებს (მაგალითად, ბგეროვანი შეტყობინებების დამუშავება, JobScheduler დავალებების შესრულება), რომლებიც დროებით აცილებენ მას სრული არარაციონალური ფონური მუშაობის მდგომარეობიდან.
ძირითადი განსხვავება: Android 8.0-დან და ზევით, ფონური რეჟიმში მუშაობს სერვისი, რომელიც არ აქვს ხილული აქტივობა ან ხილული სერვისი, სისტემის მიერ შეზღუდულია რესურსების და გრძელვადიანი მუშაობის შესაძლებლობის თვალსაზრისით. ჩვეულებრივი "ფონური სერვისი" Android 8.0-მდე მუშაობდა ამგვარი მკაცრი შეზღუდვების გარეშე.