Middle+
როგორ განისაზღვრება პროგრამების პრიორიტეტი სისტემაში?
sobes.tech AI
პასუხი AI-სგან
Android-ში აპლიკაციის პრიორიტეტი განსაზღვრება რამდენიმე ფაქტორის საფუძველზე, მათ შორის:
- კომპონენტის აქტივობა: აპლიკაცია, რომლის აქტივები (აქტივობები წინსაფარზე, სერვისები, რომლებიც დაწყებულია
startForeground-ით), აქვს უფრო მაღალი პრიორიტეტი. - რესურსების გამოყენება: აპლიკაციები, რომლებიც აქტიურად იყენებენ CPU-ს ან დიდ მეხსიერებას, შეიძლება იყოს სისტემის მიერ დაბალი პრიორიტეტით მონიშნული, რათა შეინარჩუნოს რესურსები უფრო მნიშვნელოვანი დავალებებისთვის.
- მომხმარებლის ინტერფეისთან კავშირი: აპლიკაციები, რომლებიც პირდაპირ ურთიერთობენ მომხმარებელთან ამ მომენტში, იღებენ ყველაზე მაღალი პრიორიტეტს.
- მაღალი პრიორიტეტით პროცესებთან კავშირი: პროცესი, რომელსაც უკავშირდება კომპონენტი (მაგალითად, სერვისი, რომელსაც უკავშირდება აქტივობა), მემკვიდრეობით იღებს უფრო მაღალ პროცესის პრიორიტეტს.
Android სისტემა იყენებს ამ ფაქტორებს, რათა განსაზღვროს "მნიშვნელობის ხარისხი" (importance level) აპლიკაციის, რაც საბოლოოდ განსაზღვრავს, რამდენად სავარაუდოა მისი პროცესის დასრულება (გათიშვა) მეხსიერების უკმარისობის დროს.
ძირითადი მნიშვნელობის დონეები პროცესებისთვის:
- Foreground process: ყველაზე მნიშვნელოვანი პროცესი. აპლიკაცია, რომლის აქტივობა ჩანს ეკრანზე, ან დაწყებულია
startForeground-ით, ან იყენებს გარკვეულ API-ებს (მაგალითად, დაკავშირებულია სხვა აქტივობის წინსაფარზე). არასდროს იხურება სისტემის მიერ, თუ მხოლოდ კრიტიკული რესურსების უკმარისობა არ არის. - Visible process: პროცესი, რომელსაც არ აქვს წინსაფარის კომპონენტები, მაგრამ გავლენას ახდენს იმაზე, რასაც ხედავს მომხმარებელი. მაგალითად, პროცესი, რომელიც შეიცავს სერვისს, დაკავშირებულს წინსაფარის აქტივობასთან.
- Service process: პროცესი, რომელიც შეიცავს სერვისს, დაწყებული
startService-ით და არ არის მითითებული როგორც foreground სერვისი. შეიძლება დასრულდეს, როდესაც მეხსიერების უკმარისობა სერიოზული ხდება. - Cached process: პროცესი, რომელსაც არ აქვს აქტიური კომპონენტები და შენახულია მეხსიერებაში სწრაფი განახლებისთვის. ყველაზე დაბალი მნიშვნელობის პროცესი და ყველაზე სავარაუდო კანდიდატი დასრულებისთვის მეხსიერების უკმარისობის დროს.