Middle
Androidda foniy xizmat (oldingi xizmat) nima?
sobes.tech AI
AIdan javob
Androidda fon (foreground service) — bu yuqori ustuvorlikka ega va foydalanuvchiga ko‘rinadigan servis turidir. U foydalanuvchi uchun sezilarli bo‘ladigan vazifalarni bajaradi va batareya yoki xotira tejash uchun to‘xtatilmasligi kerak.
Asosiy xususiyatlar:
- Bildirishnomalar panelida doimiy bildirishnoma ko‘rsatadi. Foydalanuvchi servisin ishga tushganligini ko‘rishi va ehtimol unga bilan muloqot qilishi mumkin.
- Tizim oddiy fon servis yoki oqimga nisbatan yuqori ustuvorligi tufayli fon servisni tugatish ehtimoli kamroq.
- Maxsus ruxsatnoma
FOREGROUND_SERVICEtalab qilinadi. - Musiqa ijro etish, joylashuvni kuzatish, real vaqtda ma'lumotlarni sinxronlashtirish kabi vazifalar uchun ishlatiladi.
Hayot aylanishi:
startForegroundService()yordamida boshlanadi.- 5 sekund ichida
startForeground(notificationId, notification)chaqirilishi kerak, aks holda tizim servisni to‘xtatishi vaForegroundServiceDidNotStartInTimeExceptionxatosini chiqarishi mumkin. stopSelf()yoki boshqa komponentdanstopService()yordamida yoki foydalanuvchi tomonidan bildirishnoma orqali majburan to‘xtatiladi. To‘xtatishdastopForeground(bool removeNotification)chaqirilishi va bildirishnomani olib tashlash kerak.
Boshlash misoli:
// Ruxsat olish
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.FOREGROUND_SERVICE),
REQUEST_CODE_FOREGROUND_SERVICE
)
// Ruxsat olgandan so‘ng yoki ruxsat allaqachon bo‘lsa
val serviceIntent = Intent(this, MyForegroundService::class.java)
ContextCompat.startForegroundService(this, serviceIntent)
Servis ichida:
// MyForegroundService.kt
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val notification: Notification = createNotification() // Bildirishnoma yaratish metodi
startForeground(NOTIFICATION_ID, notification)
// Bu yerda servis vazifasi boshlanadi
return START_STICKY // Yoki boshqa mos bayroq
}
override fun onDestroy() {
stopForeground(true) // To‘xtashda bildirishnomani olib tashlash
// Resurslarni tozalash
super.onDestroy()
}