App Standby — bu nədir, gözləmə səviyyələri və iş prinsipi

Müəllif: IT Sectr Dərc olunub: 2026-03-28 Oxuma vaxtı: 10 dəq

App Standby Android mexanizmidir, nadir istifadə olunan tətbiqləri gözləmə rejiminə keçirərək batareya qənaəti üçün onların fon fəaliyyətini məhdudlaşdırır. Doze Mode-dan (cihazın yuxu rejimi) fərqli olaraq, App Standby ayrı-ayrı tətbiqlər səviyyəsində ekran və hərəkət vəziyyətindən asılı olmayaraq işləyir. Spesifikasiyaya əsasən Android Developers, 2025, App Standby nadir istifadə olunan tətbiqlərin enerji istehlakını 70% azalda bilər.

Əsas məlumatlar

  • App Standby — nadir istifadə olunan Android tətbiqləri üçün gözləmə rejimi
  • Səviyyələr — Active, Working Set, Frequent, Rare — məhdudiyyət dərəcəsini müəyyən edir
  • Məhdudiyyətlər — gecikmiş JobScheduler, şəbəkə blokadası, AlarmManager gecikməsi
  • Bucket — sistem istifadə tezliyinə əsasən səviyyəni avtomatik təyin edir
  • FCM — push bildirişləri tətbiqin bucket-ni müvəqqəti yüksəldə bilər

App Standby nədir

App Standby Android enerji idarəetmə sisteminin komponentidir, Android 6.0 (API 23)-da təqdim edilib və Android 9 (API 28)-da əhəmiyyətli dərəcədə yenidən işlənib. Onun vəzifəsi istifadəçinin hansı tətbiqləri nadir istifadə etdiyini müəyyən etmək və onların fon fəaliyyətini məhdudlaşdırmaqdır: şəbəkə sorğuları, sinxronizasiya, JobScheduler və AlarmManager. Doze-dən fərqli olaraq, App Standby ekran vəziyyətindən və ya cihazın hərəkətindən asılı deyil.

Sistem tətbiqləri dörd bucket (səviyyə) üzrə təsnif edir: Active, Working Set, FrequentRare. Hər bir səviyyə fon fəaliyyətinin nə dərəcədə məhdudlaşdırıldığını müəyyən edir. Səviyyələr arasında keçid tətbiqin istifadə nümunələri əsasında avtomatik baş verir: istifadəçinin onu nə qədər tez-tez açması, bildirişlər alması, vidjetlərlə qarşılıqlı əlaqədə olması.

App Standby Doze Mode ilə birlikdə işləyir, lakin onu əvəz etmir. Doze cihaz hərəkətsiz olduqda bütün tətbiqlərin fon fəaliyyətini məhdudlaşdırırsa, App Standby cihazın vəziyyətindən asılı olmayaraq konkret tətbiqləri məhdudlaşdırır. Rare səviyyəli tətbiq, istifadəçi onu bir neçə gün açmasa belə, telefondan aktiv istifadə zamanı belə məhdudiyyətlərə malik olacaq.

Android 9+-da Bucket

Android 9 (API 28)-dan başlayaraq Google App Standby Buckets-i tətbiq etdi — rəqəmli dəyərlərlə formal təsnifat. Sistem tətbiqin növbəti işə salınmasını proqnozlaşdırmaq üçün maşın öyrənməsindən istifadə edir. Model proqnozlaşdırırsa ki, tətbiq yaxın saatlarda açılacaq, Active bucket alır. Proqnoz nadir istifadəni göstərirsə — Rare təyin edilir.

App Standby necə işləyir

App Standby bucket müəyyən etmək üçün bir neçə amili təhlil edir: tətbiqin istifadəçi tərəfindən son açılma vaxtı, qarşılıqlı əlaqə tezliyi (gündə/həftədə işə salma sayı), FCM bildirişlərinin alınması, iş masasında aktiv vidjetlərin olması və AlarmManager abunəliyi. Tətbiq nə qədər uzun müddət istifadə edilməzsə, bucket bir o qədər aşağı olur və məhdudiyyətlər bir o qədər sərt olur.

Sistem servisi UsageStatsManager tətbiqlərin istifadə statistikasını toplayır və onu StandbyController-ə ötürür — framework komponenti, hər bir tətbiq üçün bucket hesablayır. StandbyController həmçinin sistem hadisələrini nəzərə alır: tətbiq yeniləndikdən sonra onun bucket bir neçə gün Active-ə sıfırlanır ki, istifadəçi yeni funksiyaları qiymətləndirə bilsin.

Vacib xüsusiyyət: App Standby tətbiqin prosesini öldürmür, onun fon imkanlarını məhdudlaşdırır. Tətbiq, istifadəçi onunla qarşılıqlı əlaqədə olduqda (bucket Active) işləməyə davam edir. İstifadəçi tətbiqi bağlayıb ona qayıtmadıqda, sistem hərəkətsizlik vaxtını saymağa başlayır və bucket-ni Working Set və ya Frequent-ə endirə bilər.

FCM-in bucket-ə təsiri

FCM high-priority mesajının alınması tətbiqin bucket-ni müvəqqəti olaraq Active-ə yüksəldə bilər. Bu, tətbiqə məhdudiyyətsiz tapşırığı yerinə yetirmək imkanı verir (mesajı emal etmək, məlumatları sinxronizasiya etmək). Lakin emal başa çatdıqdan sonra bucket ilkin dəyərinə qayıdır. Google bu mexanizmdən vacib bildirişlərin çatdırılması üçün istifadə etməyi tövsiyə edir, tətbiqi «canlı» saxlamaq üçün yox.

App Standby səviyyələri

App Standby tətbiqləri təsnif etmək üçün dörd səviyyədən (bucket) istifadə edir. Hər bir səviyyə fon tapşırıqları üçün gecikmə müddətini müəyyən edir: səviyyə nə qədər aşağı olarsa, gecikmə bir o qədər uzun olar. Sistem son 7–14 gün ərzində toplanmış istifadə statistikasına əsasən tətbiqi səviyyələr arasında avtomatik hərəkət etdirir.

BucketTəsvirJobScheduler gecikməsiŞəbəkə
ActiveTətbiq aktiv istifadə olunurGecikmə yoxdurTam giriş
Working SetMüntəzəm istifadə olunur, amma indi yox2 saata qədərPəncərələrdə
FrequentTez-tez istifadə olunur, amma hər gün yox4 saata qədərPəncərələrdə
RareNadir istifadə olunan tətbiq24 saata qədərPəncərələrdə

Active — aktiv tətbiq

Active — istifadəçinin son vaxtlar qarşılıqlı əlaqədə olduğu tətbiq (işə saldı, bildiriş aldı və ya vidjetdən istifadə etdi). Bu bucket-də məhdudiyyət yoxdur: JobScheduler dərhal işə düşür, şəbəkə mövcuddur, AlarmManager dəqiq işləyir. Tətbiq Active olaraq qalır, istifadəçi onunla bir neçə saat qarşılıqlı əlaqəni dayandırana qədər.

Working Set və Frequent

Working Set — tətbiq müntəzəm istifadə olunur (həftədə bir neçə dəfə). Fon tapşırıqlarının gecikməsi 2 saata qədər. Frequent — tətbiq ayda bir neçə dəfə istifadə olunur. Gecikmə 4 saata qədər. Hər iki səviyyədə şəbəkə yalnız xidmət pəncərələrində mövcuddur, AlarmManager isə gecikdirilə bilər. JobScheduler tapşırıqları ən yaxın pəncərədə yerinə yetirir.

Rare — nadir istifadə olunan

Rare — ən sərt səviyyə, istifadəçinin 30 gündən çox açmadığı tətbiqlərə təyin edilir. Fon tapşırıqlarının gecikməsi 24 saata çatır. Şəbəkə xidmət pəncərələrindən kənarda tamamilə bloklanır, AlarmManager yalnız setAndAllowWhileIdle() bayraqları ilə 9 dəqiqədə 1 dəfə məhdudiyyəti ilə işləyir. FCM high-priority bildirişləri hələ də çatdırılır, lakin bucket-ni yüksəldə bilməz.

App Standby-də məhdudiyyətlər

App Standby bir neçə fon əməliyyatı kateqoriyasına məhdudiyyətlər qoyur. Doze-dən fərqli olaraq, App Standby məhdudiyyətləri ekran vəziyyətindən və şarj cihazından asılı olmayaraq fəaliyyət göstərir. Tərtibatçı tətbiqi bu məhdudiyyətləri nəzərə alaraq dizayn etməlidir, xüsusən də hədəf auditoriya tətbiqdən qeyri-müntəzəm istifadə edirsə.

JobScheduler və WorkManager

JobScheduler — App Standby-nin təsir etdiyi əsas API. Bucket-dən asılı olaraq tapşırıqların yerinə yetirilmə gecikməsi 2 ilə 24 saat arasında dəyişir. WorkManager, JobScheduler-dən istifadə edən (API 23+-da), bu gecikmələrə məruz qalır. Vaxt baxımından kritik tapşırıqlar üçün Expedited Work istifadə edin, o, Foreground Service-i işə salır və bucket-dən asılı deyil.

Şəbəkə məhdudiyyətləri

Working Set, FrequentRare bucket-lərindəki tətbiqlər istənilən vaxt ixtiyari şəbəkə sorğuları edə bilməz. Sistem şəbəkəyə girişə yalnız Doze ilə sinxronlaşdırılmış xidmət pəncərələrində icazə verir. Kritik məlumatların göndərilməsi üçün FCM high-priority və sonra xidmət pəncərəsində sinxronizasiyadan istifadə edin.

AlarmManager

AlarmManager App Standby-də Doze-də olduğu kimi eyni qaydalara tabedir: dəqiq alarmlar (setExact()) gecikdirilir, setAndAllowWhileIdle() isə 9 dəqiqədə 1 dəfə məhdudlaşdırılır. Rare bucket üçün gecikmə 24 saata çata bilər ki, bu da AlarmManager-i nadir istifadə olunan tətbiqlərdə tapşırıqların dəqiq planlaşdırılması üçün yararsız edir.

  • JobScheduler — tapşırıqlar bucket-dən asılı olaraq 2–24 saat gecikdirilir
  • Şəbəkə — Working Set və aşağısı üçün yalnız xidmət pəncərələrində giriş
  • AlarmManager — dəqiq alarmlar gecikdirilir; setAndAllowWhileIdle — 1/9 dəq
  • SyncManager — hesab sinxronizasiyası xidmət pəncərəsinə qədər gecikdirilir
  • Widget updates — vidjetlərin yenilənmə tezliyi azaldıla bilər

İstisnanı necə əldə etmək olar

İstisna App Standby-dən iki yolla əldə edilə bilər: istifadəçinin batareya parametrləri vasitəsilə (əl ilə Whitelist) və ya sistem Intent-i ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS vasitəsilə. Lakin Google istisnalara girişi ciddi şəkildə tənzimləyir — istisna üçün əsaslı səbəbi olmayan tətbiqlər Google Play-də rədd edilə bilər.

İstifadəçi müəyyən bir tətbiq üçün məhdudiyyətləri əl ilə söndürə bilər: Parametrlər → Tətbiqlər → [Tətbiq] → Batareya → Optimizasiya → Optimizasiya etmə. Bu, seçilmiş tətbiq üçün App Standby və Doze məhdudiyyətlərini tamamilə aradan qaldırır. Tərtibatçı istifadəçiyə təlimat və ya sistem dialoqu göstərə bilər, lakin tətbiqi istisnalara məcburi əlavə edə bilməz.

Foreground Service bildirişlə avtomatik olaraq App Standby-dən müvəqqəti istisna alır. Xidmət işləyərkən və bildiriş göstərərkən, tətbiq real səviyyəsindən asılı olmayaraq Active bucket-ə keçirilir. Xidmət dayandırıldıqdan sonra bucket ilkin dəyərinə qayıdır. Bu, sistem istisnalarını tələb etmədən fon işini təmin etməyin ən etibarlı üsuludur.

İstisnanı nə vaxt tələb etmək

Whitelist tələb etmək yalnız kritik fon funksionallığı olan tətbiqlər üçün məna kəsb edir: real vaxt naviqasiyası, sağlamlıq monitorinqi, VoIP zəngləri, cihazın mühafizəsi. Əksər tətbiqlər üçün Foreground Service və ya WorkManager istifadə etmək kifayətdir. Google Play, tətbiq açıq ehtiyac olmadan istisna tələb edərsə, nəşri rədd edə bilər.

kotlin
// App Standby-dən istisna tələbi
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply {
    data = Uri.parse("package:\${applicationContext.packageName}")
}

// Cari statusun yoxlanılması
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
val isIgnoring = powerManager.isIgnoringBatteryOptimizations(packageName)

App Standby-nin test edilməsi

Test etmə App Standby-ni ADB vasitəsilə tətbiqə istənilən bucket təyin etməyə və onun davranışını yoxlamağa imkan verir. Bu, fon sinxronizasiyasına, bildirişlərə və ya dövri yeniləmələrə güvənən tətbiqlər üçün kritik əhəmiyyət daşıyır. Test fiziki cihazda və ya Android 9+ olan emulatorda aparılmalıdır.

Bucket-nin məcburi təyini üçün adb shell am set-standby-bucket [package] [bucket] əmrindən istifadə olunur, burada bucket ola bilər: active, working_set, frequent və ya rare. Cari bucket-ə baxmaq üçün — adb shell am get-standby-bucket [package]. Sistem həmçinin adb shell dumpsys usagestats əmri ilə tətbiqin uzun müddətli hərəkətsizliyini simulyasiya etməyə imkan verir.

bash
# Tətbiq üçün Rare bucket-nin təyin edilməsi
$ adb shell am set-standby-bucket com.example.app rare

# Cari bucket-ə baxış
$ adb shell am get-standby-bucket com.example.app

# Bütün bucket-lərin Active-ə sıfırlanması
$ adb shell dumpsys usagestats clear

# Sistemin bütün bucket-lərinə baxış
$ adb shell dumpsys usagestats

Nə yoxlamaq

Rare bucket təyin etdikdən sonra yoxlayın: WorkManager tapşırığı 24 saat ərzində yerinə yetirilirmi, AlarmManager işə düşürmü, FCM bildirişləri çatdırılırmı, Foreground Service məhdudiyyətsiz işləyirmi. WorkManager Expedited Work siyasəti ilə hətta Rare bucket-də dərhal yerinə yetirilməlidir, çünki Foreground Service-dən istifadə edir. Adi WorkManager tapşırıqları bucket-ə uyğun olaraq gecikdiriləcək.

Ən yaxşı təcrübələr

App Standby-yə davamlı tətbiqin hazırlanması fon tapşırıqlarına şüurlu yanaşma tələb edir. Əsas prinsip: tətbiqin həmişə Active bucket-də olduğunu güman etməyin. Fon işini elə dizayn edin ki, Frequent və Rare bucket-ləri üçün xarakterik olan gecikmələrlə düzgün işləsin.

WorkManager-i Expedited Work ilə istifadə edin

Expedited Work (WorkManager 2.7+) Foreground Service-i işə salır ki, bu da tapşırığa bucket-dən asılı olmayaraq dərhal yerinə yetirilmə imkanı verir. Bu, gecikdirilə bilməyən tapşırıqlar üçün optimal seçimdir: mesaj göndərmək, ödənişdən sonra sinxronizasiya, daxil olan zəngin işlənməsi. Adi WorkManager tapşırıqları bucket nəzərə alınmaqla xidmət pəncərələrində yerinə yetirilir.

Reaktivasiya üçün FCM

FCM high-priority mesajlarından tətbiqi App Standby-dən oyatmaq üçün istifadə edin. Tətbiq belə bir mesaj aldıqda, onun bucket müvəqqəti olaraq Active-ə yüksəlir və lazımi tapşırıqları yerinə yetirə bilər (sinxronizasiya, məlumat yeniləmə). Emal başa çatdıqdan sonra bucket ilkin səviyyəyə qayıdır.

Daimi yaddaşda saxlamaqdan çəkinin

App Standby-ni daimi fon xidmətləri, WakeLock və ya dövri FCM mesajları ilə keçməyə çalışmayın. Google bu cür təcrübələrlə fəal mübarizə aparır — tətbiq enerji tələb edən kimi qeyd oluna və daha sərt məhdudlaşdırıla bilər. Dövri tapşırıqlar üçün WorkManager, Foreground Service isə yalnız tapşırıq həqiqətən istifadəçiyə görünəndə istifadə edin.

  • WorkManager — üstünlük verilən API; Expedited Work tapşırıqları gecikmədən yerinə yetirir
  • FCM high-priority — mesajın emalı üçün bucket-ni müvəqqəti Active-ə yüksəldir
  • Keçməyin App Standby-ni — bu sistem tərəfindən tətbiqin bloklanmasına gətirib çıxarır
  • Foreground Service — iş vaxtı ərzində tətbiqi müvəqqəti Active-ə keçirir
  • Test edin tətbiqi Rare və Frequent bucket-lərində ADB vasitəsilə hər buraxılışdan əvvəl

Tez-tez verilən suallar

Android-də App Standby nədir?

App Standby Android mexanizmidir, tətbiqləri istifadə tezliyinə görə təsnif edir və nadir istifadə olunanların fon fəaliyyətini məhdudlaşdırır. Doze-dən fərqli olaraq, App Standby tətbiq səviyyəsində ekran vəziyyətindən və cihazın hərəkətindən asılı olmayaraq işləyir.

App Standby-nin hansı səviyyələri var?

4 səviyyə var: Active (məhdudiyyətsiz), Working Set (2 saata qədər gecikmə), Frequent (4 saata qədər gecikmə) və Rare (24 saata qədər gecikmə). Səviyyə tətbiqin istifadə tezliyinə əsasən avtomatik müəyyən edilir.

App Standby Doze Mode-dan nə ilə fərqlənir?

App Standby cihazın vəziyyətindən asılı olmayaraq konkret nadir istifadə olunan tətbiqləri məhdudlaşdırır. Doze Mode cihaz hərəkətsiz olduqda bütün tətbiqləri məhdudlaşdırır (ekran sönük, hərəkət yoxdur). Onlar paralel işləyir və Android enerji qənaət sistemində bir-birini tamamlayır.

Tətbiqimin bucket-ni necə öyrənə bilərəm?

ADB əmrindən istifadə edin: adb shell am get-standby-bucket [package]. Proqram vasitəsilə — UsageStatsManager.getAppStandbyBucket(), Android 9 (API 28)-dan etibarən mövcuddur. Metod bucket-in rəqəmli identifikatorunu qaytarır: 10 (Active), 20 (Working Set), 30 (Frequent), 40 (Rare).

App Standby-də tapşırığın yerinə yetirilməsini necə təmin etmək olar?

WorkManager Expedited Work və ya Foreground Service bildirişlə istifadə edin. Expedited Work Foreground Service-i işə salır və bucket-dən asılı olmayaraq yerinə yetirilməni təmin edir. Adi WorkManager tapşırıqları tətbiqin cari səviyyəsinə uyğun olaraq gecikdiriləcək.

Nəticə

  • App Standby — tətbiqlərin istifadə tezliyinə əsasən 4 səviyyə üzrə təsnifatı
  • Active — məhdudiyyətsiz; Rare — fon tapşırıqları üçün 24 saata qədər gecikmə
  • Məhdudiyyətlər — JobScheduler gecikdirilir, şəbəkə bloklanır, AlarmManager gecikdirilir
  • Bucket — istifadəçi davranışına əsasən UsageStatsManager tərəfindən avtomatik müəyyən edilir
  • Foreground Service — iş vaxtı ərzində tətbiqi müvəqqəti Active-ə keçirir
  • Expedited Work — Foreground Service vasitəsilə dərhal yerinə yetirmə ilə WorkManager
  • Test etməadb shell am set-standby-bucket hər səviyyədə davranışı yoxlamaq üçün

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun