Sobes.tech
Intern

Androidda fon xizmat va fon xizmat o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Android 8.0 (API 26) ilə birlikdə, adi fon xidməti ilə məhdudlaşdırılmış (restricted) fon xidməti arasındakı fərq ortaya çıxdı.

Adi fon xidməti:

  • Məhdudiyyətsiz vaxtda fon rejimində işləyə bilər.
  • Sistem resurs çatışmazlığı zamanı onu dayandıra bilər, lakin START_STICKY onStartCommand()-də geri qaytarılsa, yenidən başlatıla bilər.
  • İstifadəçiyə görünən bildirişlər tələb etmir (baxmayaraq ki, bu UX baxımından ən yaxşı təcrübə deyil).
  • Batareya və CPU resurslarını əhəmiyyətli dərəcədə istifadə edə bilər.

Məhdudlaşdırılmış fon xidməti (tətbiq olunan məhdudiyyətlər):

  • Görünən fəaliyyətlər və ya digər "ağ siyahılar" (əlavə şərtlər) olmadan fon rejimində başlatılan xidmət, resurs istifadəsində məhdudiyyətlərlə üzləşir.
  • Əsas məhdudiyyətlər bunlardır:
    • Fon rejimində işləmə məhdudiyyəti: Sistem, tətbiq fon rejiminə keçdikdən sonra qısa müddət (adətən bir neçə dəqiqə) içində xidməti dayandıra bilər.
    • Yeni fon xidmətlərinin başlamasının qadağan olunması: Fon tətbiqi startService() ilə yeni fon xidmətləri başlada bilməz. Bunun yerinə JobScheduler və ya WorkManager istifadə olunmalıdır.
    • Broadcast mesajlarının alınmasında məhdudiyyət: Manifestdəki dolayı broadcast mesajlar (implicit broadcasts) nəzərə alınmayacaq. Tətbiq açıq şəkildə broadcast qəbul edənləri qeydiyyatdan keçirməli və ya JobScheduler/WorkManager istifadə etməlidir.
  • Bu məhdudiyyətlərin məqsədi batareyanın ömrünü və cihazın performansını yaxşılaşdırmaq, fon tətbiqlərinin resurslardan irrasyonel istifadəsini məhdudlaşdırmaqdır.

Xidmətin məhdudiyyətdən çıxması (sistem baxımından aktivləşməsi):

  • Tətbiq ön planda (istifadəçi aktiv şəkildə onunla qarşılıqlı əlaqədədir).
  • Tətbiq görünən xidmət başlatır (foreground service), bu da istifadəçiyə davamlı bildiriş göstərir.
  • Tətbiq müəyyən tapşırıqları yerinə yetirir (məsələn, broadcast mesajlarının işlənməsi, JobScheduler tapşırıqlarının icrası), bu da onu tam irrasyonel fon rejimindən müvəqqəti çıxarır.

Əsas fərq: Android 8.0 və yuxarı versiyalarda, istifadəçi görünən fəaliyyəti və ya görünən xidməti olmayan fon xidməti, sistem tərəfindən resurslara çıxış və uzunmüddətli işləmə baxımından məhdudlaşdırılacaqdır. Android 8.0-dan əvvəlki adi "fon xidməti" bu cür sərt məhdudiyyətlər olmadan işləyə bilərdi.