Sobes.tech
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-მდე მუშაობდა ამგვარი მკაცრი შეზღუდვების გარეშე.