App Standby Android mexanizmi bo'lib, kam ishlatiladigan ilovalarni kutish rejimiga o'tkazadi va batareyani tejash uchun ularning fon faoliyatini cheklaydi. Doze Mode (qurilmaning uyqu rejimi) dan farqli o'laroq, App Standby alohida ilovalar darajasida ekran holati va harakatdan qat'iy nazar ishlaydi. Spetsifikatsiyaga ko'ra Android Developers, 2025, App Standby kam ishlatiladigan ilovalarning energiya sarfini 70% gacha kamaytirishi mumkin.
Asosiy ma'lumotlar
App Standby Android energiya boshqaruv tizimining komponenti bo'lib, Android 6.0 (API 23) da joriy qilingan va Android 9 (API 28) da sezilarli darajada qayta ishlangan. Uning vazifasi foydalanuvchi qaysi ilovalarni kam ishlatishini aniqlash va ularning fon faoliyatini cheklash: tarmoq so'rovlari, sinxronizatsiya, JobScheduler va AlarmManager. Doze dan farqli o'laroq, App Standby ekran holati yoki qurilma harakatiga bog'liq emas.
Tizim ilovalarni to'rtta bucket (daraja) bo'yicha tasniflaydi: Active, Working Set, Frequent va Rare. Har bir daraja fon faoliyati qanchalik cheklanganligini belgilaydi. Darajalar o'rtasidagi o'tish ilovadan foydalanish namunalari asosida avtomatik ravishda sodir bo'ladi: foydalanuvchi uni qanchalik tez-tez ochishi, bildirishnomalar olishi, vidjetlar bilan o'zaro aloqada bo'lishi.
App Standby Doze Mode bilan birga ishlaydi, lekin uni almashtirmaydi. Agar Doze qurilma harakatsiz bo'lganda barcha ilovalarning fon faoliyatini cheklasa, App Standby qurilma holatidan qat'iy nazar muayyan ilovalarni cheklaydi. Rare darajasidagi ilova, foydalanuvchi uni bir necha kun ochmagan bo'lsa ham, telefondan faol foydalanish paytida cheklovlarga ega bo'ladi.
Android 9 (API 28) dan boshlab Google App Standby Buckets ni joriy qildi — raqamli qiymatlar bilan rasmiy tasnif. Tizim ilovaning keyingi ishga tushirilishini bashorat qilish uchun mashina o'rganishidan foydalanadi. Agar model yaqin soatlarda ilova ochilishini bashorat qilsa, Active bucket oladi. Agar bashorat kam foydalanishni ko'rsatsa — Rare tayinlanadi.
App Standby bucket ni aniqlash uchun bir necha omillarni tahlil qiladi: ilovaning foydalanuvchi tomonidan oxirgi ochilish vaqti, o'zaro aloqa chastotasi (kuniga/haftada ishga tushirish soni), FCM bildirishnomalarini olish, ish stolida faol vidjetlarning mavjudligi va AlarmManager obunasi. Ilova qanchalik uzoq ishlatilmasa, uning bucket shunchalik past bo'ladi va cheklovlar shunchalik qattiq bo'ladi.
Tizim xizmati UsageStatsManager ilovalardan foydalanish statistikasini to'playdi va uni StandbyController ga uzatadi — har bir ilova uchun bucket hisoblaydigan framework komponenti. StandbyController shuningdek tizim hodisalarini hisobga oladi: ilova yangilangandan so'ng, uning bucket bir necha kunga Active ga qaytariladi, shunda foydalanuvchi yangi funksiyalarni baholay oladi.
Muhim xususiyat: App Standby ilova jarayonini o'ldirmaydi, balki uning fon imkoniyatlarini cheklaydi. Ilova, foydalanuvchi u bilan o'zaro aloqada bo'lsa (bucket Active), ishlashda davom etadi. Foydalanuvchi ilovani yopib, unga qaytmasa, tizim harakatsizlik vaqtini hisoblashni boshlaydi va bucket ni Working Set yoki Frequent ga tushirishi mumkin.
FCM high-priority xabarini olish ilovaning bucket ni vaqtincha Active ga oshirishi mumkin. Bu ilovaga cheklovlarsiz vazifani bajarish imkoniyatini beradi (xabarni qayta ishlash, ma'lumotlarni sinxronlashtirish). Biroq, qayta ishlash tugagandan so'ng, bucket asl qiymatiga qaytadi. Google ushbu mexanizmdan muhim bildirishnomalarni yetkazib berish uchun foydalanishni tavsiya qiladi, ilovani “jonli” saqlash uchun emas.
App Standby ilovalarni tasniflash uchun to'rtta darajadan (bucket) foydalanadi. Har bir daraja fon vazifalari uchun kechikish vaqtini belgilaydi: daraja qanchalik past bo'lsa, kechikish shunchalik uzoq bo'ladi. Tizim so'nggi 7–14 kun davomida to'plangan foydalanish statistikasiga asoslanib, ilovani darajalar o'rtasida avtomatik ravishda harakatlantiradi.
| Bucket | Tavsif | JobScheduler kechikishi | Tarmoq |
|---|---|---|---|
| Active | Ilova faol ishlatilmoqda | Kechikish yo'q | To'liq kirish |
| Working Set | Muntazam ishlatiladi, lekin hozir emas | 2 soatgacha | Oynalarda |
| Frequent | Tez-tez ishlatiladi, lekin har kuni emas | 4 soatgacha | Oynalarda |
| Rare | Kam ishlatiladigan ilova | 24 soatgacha | Oynalarda |
Active — foydalanuvchi yaqinda o'zaro aloqada bo'lgan ilova (ochgan, bildirishnoma olgan yoki vidjetdan foydalangan). Bu bucket da cheklovlar yo'q: JobScheduler darhol ishga tushadi, tarmoq mavjud, AlarmManager aniq ishlaydi. Ilova Active holatida qoladi, foydalanuvchi u bilan bir necha soat o'zaro aloqani to'xtatmaguncha.
Working Set — ilova muntazam ishlatiladi (haftada bir necha marta). Fon vazifalarining kechikishi 2 soatgacha. Frequent — ilova oyda bir necha marta ishlatiladi. Kechikish 4 soatgacha. Ikkala darajada ham tarmoq faqat xizmat oynalarida mavjud, AlarmManager esa kechiktirilishi mumkin. JobScheduler vazifalarni eng yaqin oynada bajaradi.
Rare — eng qattiq daraja, foydalanuvchi 30 kundan ortiq ochmagan ilovalarga tayinlanadi. Fon vazifalarining kechikishi 24 soatga etadi. Tarmoq xizmat oynalaridan tashqarida to'liq bloklanadi, AlarmManager faqat setAndAllowWhileIdle() bayroqlari bilan 9 daqiqada 1 marta cheklovi bilan ishlaydi. FCM high-priority bildirishnomalari hali ham yetkaziladi, lekin bucket ni oshira olmaydi.
App Standby bir necha fon operatsiyalari toifalariga cheklovlar qo'yadi. Doze dan farqli o'laroq, App Standby cheklovlari ekran holati va zaryadlovchi qurilmadan qat'iy nazar ishlaydi. Dasturchi ilovani ushbu cheklovlarni hisobga olgan holda loyihalashtirishi kerak, ayniqsa maqsadli auditoriya ilovadan tartibsiz foydalansa.
JobScheduler — App Standby ta'sir qiladigan asosiy API. Bucket ga qarab vazifalarni bajarish kechikishi 2 dan 24 soatgacha o'zgaradi. WorkManager, JobScheduler dan foydalanadigan (API 23+ da), ushbu kechikishlarga duchor bo'ladi. Vaqt bo'yicha muhim vazifalar uchun Expedited Work dan foydalaning, u Foreground Service ni ishga tushiradi va bucket ga bog'liq emas.
Working Set, Frequent va Rare bucket laridagi ilovalar istalgan vaqtda ixtiyoriy tarmoq so'rovlarini amalga oshira olmaydi. Tizim tarmoqqa kirishga faqat Doze bilan sinxronlashtirilgan xizmat oynalarida ruxsat beradi. Muhim ma'lumotlarni yuborish uchun FCM high-priority dan keyin xizmat oynasida sinxronizatsiya qiling.
AlarmManager App Standby da Doze dagi kabi qoidalarga bo'ysunadi: aniq alarmlar (setExact()) kechiktiriladi va setAndAllowWhileIdle() 9 daqiqada 1 marta cheklanadi. Rare bucket uchun kechikish 24 soatga etishi mumkin, bu AlarmManager ni kam ishlatiladigan ilovalarda vazifalarni aniq rejalashtirish uchun yaroqsiz qiladi.
Istisno App Standby dan ikki yo'l bilan olinishi mumkin: foydalanuvchi batareya sozlamalari orqali (qo'lda Whitelist) yoki tizim Intent i ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS orqali. Biroq, Google istisnolarga kirishni qat'iy tartibga soladi — istisno uchun asosli sababi bo'lmagan ilovalar Google Play da rad etilishi mumkin.
Foydalanuvchi ma'lum bir ilova uchun cheklovlarni qo'lda o'chirishi mumkin: Sozlamalar → Ilovalar → [Ilova] → Batareya → Optimizatsiya → Optimizatsiya qilma. Bu tanlangan ilova uchun App Standby va Doze cheklovlarini butunlay olib tashlaydi. Dasturchi foydalanuvchiga ko'rsatma yoki tizim dialogini ko'rsatishi mumkin, lekin ilovani istisnolarga majburiy qo'sha olmaydi.
Foreground Service bildirishnoma bilan avtomatik ravishda App Standby dan vaqtinchalik istisno oladi. Xizmat ishlayotgan va bildirishnomani ko'rsatayotgan paytda, ilova haqiqiy darajasidan qat'iy nazar Active bucket ga o'tkaziladi. Xizmat to'xtatilgandan so'ng, bucket asl qiymatiga qaytadi. Bu tizim istisnolarini talab qilmasdan fon ishini kafolatlashning eng ishonchli usuli.
Whitelist so'rash faqat muhim fon funksiyasiga ega ilovalar uchun ma'noga ega: real vaqt navigatsiyasi, salomatlik monitoringi, VoIP qo'ng'iroqlari, qurilma himoyasi. Aksariyat ilovalar uchun Foreground Service yoki WorkManager dan foydalanish etarli. Google Play, ilova aniq ehtiyojsiz istisno so'rasa, nashrni rad etishi mumkin.
// App Standby dan istisno so'rovi
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply {
data = Uri.parse("package:\${applicationContext.packageName}")
}
// Joriy holatni tekshirish
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
val isIgnoring = powerManager.isIgnoringBatteryOptimizations(packageName)
Test qilish App Standby ni ADB orqali ilovaga istalgan bucket ni majburiy tayinlash va uning xatti-harakatini tekshirish imkonini beradi. Bu fon sinxronizatsiyasiga, bildirishnomalarga yoki davriy yangilanishlarga tayanadigan ilovalar uchun juda muhimdir. Test jismoniy qurilmada yoki Android 9+ bo'lgan emulyatorda o'tkazilishi kerak.
Bucket ni majburiy o'rnatish uchun adb shell am set-standby-bucket [package] [bucket] buyrug'i ishlatiladi, bu erda bucket bo'lishi mumkin: active, working_set, frequent yoki rare. Joriy bucket ni ko'rish uchun — adb shell am get-standby-bucket [package]. Tizim shuningdek adb shell dumpsys usagestats buyrug'i orqali ilovaning uzoq muddatli harakatsizligini simulyatsiya qilish imkonini beradi.
# Ilova uchun Rare bucket ni o'rnatish
$ adb shell am set-standby-bucket com.example.app rare
# Joriy bucket ni ko'rish
$ adb shell am get-standby-bucket com.example.app
# Barcha bucket larni Active ga qaytarish
$ adb shell dumpsys usagestats clear
# Tizimning barcha bucket larini ko'rish
$ adb shell dumpsys usagestats
Rare bucket o'rnatilgandan so'ng tekshiring: WorkManager vazifasi 24 soat ichida bajariladimi, AlarmManager ishga tushadimi, FCM bildirishnomalari yetkaziladimi, Foreground Service cheklovlarsiz ishlaydimi. WorkManager Expedited Work siyosati bilan hatto Rare bucket da ham darhol bajarilishi kerak, chunki u Foreground Service dan foydalanadi. Oddiy WorkManager vazifalari bucket ga mos ravishda kechiktiriladi.
App Standby ga chidamli ilovani ishlab chiqish fon vazifalariga ongli yondashishni talab qiladi. Asosiy printsip: ilova har doim Active bucket da deb taxmin qilmang. Fon ishini Frequent va Rare bucket lariga xos kechikishlar bilan to'g'ri ishlaydigan qilib loyihalashtiring.
Expedited Work (WorkManager 2.7+) Foreground Service ni ishga tushiradi, bu vazifaga bucket dan qat'iy nazar darhol bajarish imkonini beradi. Bu kechiktirib bo'lmaydigan vazifalar uchun optimal tanlovdir: xabar yuborish, to'lovdan so'ng sinxronizatsiya, kiruvchi qo'ng'iroqni qayta ishlash. Oddiy WorkManager vazifalari bucket ni hisobga olgan holda xizmat oynalarida bajariladi.
FCM high-priority xabarlaridan ilovani App Standby dan uyg'otish uchun foydalaning. Ilova bunday xabarni olganda, uning bucket vaqtincha Active ga ko'tariladi va kerakli vazifalarni bajarishi mumkin (sinxronizatsiya, ma'lumotlarni yangilash). Qayta ishlash tugagandan so'ng, bucket boshlang'ich darajaga qaytadi.
App Standby ni doimiy fon xizmatlari, WakeLock yoki davriy FCM xabarlari bilan chetlab o'tishga urinmang. Google bunday amaliyotlarga qarshi faol kurashadi — ilova energiya talab qiluvchi deb belgilanishi va yanada qattiqroq cheklanishi mumkin. Davriy vazifalar uchun WorkManager dan, Foreground Service dan esa faqat vazifa foydalanuvchiga haqiqatan ko'rinadigan bo'lganda foydalaning.
Tez-tez so'raladigan savollar
App Standby Android mexanizmi bo'lib, ilovalarni foydalanish chastotasiga qarab tasniflaydi va kam ishlatiladiganlarning fon faoliyatini cheklaydi. Doze dan farqli o'laroq, App Standby ilova darajasida ekran holati va qurilma harakatidan qat'iy nazar ishlaydi.
4 daraja bor: Active (cheklovlarsiz), Working Set (2 soatgacha kechikish), Frequent (4 soatgacha kechikish) va Rare (24 soatgacha kechikish). Daraja ilovadan foydalanish chastotasiga qarab avtomatik aniqlanadi.
App Standby qurilma holatidan qat'iy nazar muayyan kam ishlatiladigan ilovalarni cheklaydi. Doze Mode qurilma harakatsiz bo'lganda barcha ilovalarni cheklaydi (ekran o'chgan, harakat yo'q). Ular parallel ishlaydi va Android energiya tejash tizimida bir-birini to'ldiradi.
ADB buyrug'idan foydalaning: adb shell am get-standby-bucket [package]. Dasturiy ravishda — UsageStatsManager.getAppStandbyBucket() orqali, Android 9 (API 28) dan boshlab mavjud. Usul bucket ning raqamli identifikatorini qaytaradi: 10 (Active), 20 (Working Set), 30 (Frequent), 40 (Rare).
WorkManager Expedited Work yoki Foreground Service dan bildirishnoma bilan foydalaning. Expedited Work Foreground Service ni ishga tushiradi va bucket dan qat'iy nazar bajarilishni kafolatlaydi. Oddiy WorkManager vazifalari ilovaning joriy darajasiga mos ravishda kechiktiriladi.
Xulosa
adb shell am set-standby-bucket har bir darajadagi xatti-harakatni tekshirish uchunBiz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.