Middle
Ի՞նչ է Android-ում ֆոնային ծառայությունը (առաջնային ծառայություն)։
sobes.tech AI
Պատասխան AI-ից
Ֆոնային ծառայությունը (foreground service) — դա Android-ում ծառայության տեսակ է, որն ունի բարձրացված առաջնահերթություն և տեսանելի է օգտվողին: Այն իրականացնում է այն գործառույթները, որոնք նկատելի են օգտվողի համար և չպետք է ընդհատվեն մարտկոցի խնայողության կամ հիշողության պակասի դեպքում:
Հիմնական հատկանիշները՝
- Տեղադրում է մշտական ծանուցում ծանուցումների տարածքում: Օգտվողը պետք է կարողանա տեսնել, որ ծառայությունը գործարկված է, և հնարավոր է՝ փոխազդել դրա հետ:
- Սիստեմը քիչ հավանականությամբ կդադարեցնի ֆոնային ծառայությունը՝ համեմատած սովորական ֆոնային ծառայության կամ հոսքի, քանի որ այն ունի բարձր առաջնահերթություն:
- Պահանջում է հատուկ թույլտվություն
FOREGROUND_SERVICE: - Օգտագործվում է երաժշտություն նվագելու, գտնվելու վայրի հետևելու, տվյալների սինխրոնիզացման համար իրական ժամանակում:
Կյանքի ցիկլը՝
- Սկսվում է
startForegroundService()-ի միջոցով: - Անհրաժեշտ է 5 վայրկյանի ընթացքում կանչել
startForeground(notificationId, notification)՝ ծառայությունը ֆոնային ռեժիմ տեղափոխելու համար: Հակառակ դեպքում համակարգը կարող է կանգնեցնել ծառայությունը և նետելForegroundServiceDidNotStartInTimeException: - Դադարեցվում է
stopSelf()կամstopService()-ի միջոցով այլ կոմպոնենտից կամ օգտագործողի կողմից ծանուցման միջոցով: Դադարեցման ժամանակ անհրաժեշտ է կանչելstopForeground(bool removeNotification)՝ ծանուցումը հեռացնելու համար:
Օրինակ՝
// Հասանելիություն ստանալու համար
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.FOREGROUND_SERVICE),
REQUEST_CODE_FOREGROUND_SERVICE
)
// Հետադարձ կապում, թույլտվությունը ստանալուց հետո կամ եթե այն արդեն կա
val serviceIntent = Intent(this, MyForegroundService::class.java)
ContextCompat.startForegroundService(this, serviceIntent)
Սերվիսի ներսում՝
// MyForegroundService.kt
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val notification: Notification = createNotification() // մեթոդ ծանուցում ստեղծելու համար
startForeground(NOTIFICATION_ID, notification)
// Այստեղ սկսվում է ծառայության գործառույթի իրականացման գործընթացը
return START_STICKY // կամ այլ համապատասխան նշան
}
override fun onDestroy() {
stopForeground(true) // Ծանուցումը հեռացնելու համար
// ռեսուրսների մաքրման
super.onDestroy()
}