Middle
Kas yra foninė paslauga (pirmojo plano paslauga) Android?
sobes.tech AI
Atsakymas iš AI
Fono paslauga (foreground service) yra Android tipo paslauga, turinti padidintą prioritetą ir matoma naudotojui. Ji vykdo užduotis, kurios yra pastebimos naudotojui ir neturėtų būti nutrauktos taupant bateriją ar trūkstant atminties.
Pagrindinės savybės:
- Nuolatinis pranešimas rodomas pranešimų srityje. Naudotojas turi galėti matyti, kad paslauga veikia, ir galbūt su ja sąveikauti.
- Sistema mažiau tikėtina, kad nutrauks fono paslaugą, palyginti su įprasta fono paslauga ar srautu, dėl jos aukšto prioriteto.
- Reikalauja specialios leidimo
FOREGROUND_SERVICE. - Naudojama muzikos grojimui, vietovės stebėjimui, duomenų sinchronizacijai realiuoju laiku.
Gyvenimo ciklas:
- Pradedama naudojant
startForegroundService(). - Per 5 sekundes reikia iškviesti
startForeground(notificationId, notification), kad paslauga būtų perkelta į foninį režimą. Kitaip sistema gali sustabdyti paslaugą ir mestiForegroundServiceDidNotStartInTimeException. - Sustabdomas naudojant
stopSelf()arbastopService()iš kito komponento arba priverstinai naudotojo per pranešimą. Sustabdžius, reikia iškviestistopForeground(bool removeNotification)pranešimo pašalinimui.
Pavyzdys:
// Leidimo gavimas
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.FOREGROUND_SERVICE),
REQUEST_CODE_FOREGROUND_SERVICE
)
// Po leidimo gavimo arba jei leidimas jau yra
val serviceIntent = Intent(this, MyForegroundService::class.java)
ContextCompat.startForegroundService(this, serviceIntent)
Paslauga:
// MyForegroundService.kt
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val notification: Notification = createNotification() // Metodas pranešimui sukurti
startForeground(NOTIFICATION_ID, notification)
// Čia prasideda paslaugos užduoties vykdymas
return START_STICKY // Arba kitas tinkamas žymeklis
}
override fun onDestroy() {
stopForeground(true) // Pašalinti pranešimą
// Išlaisvinti išteklius
super.onDestroy()
}