Middle
Mis on taustateenus (eesliini teenus) Androidis?
sobes.tech AI
Vastus AI-lt
Fooniteenus (foreground service) on Androidi tüüp, millel on tõstetud prioriteet ning mis on kasutajale nähtav. See täidab ülesandeid, mis on kasutajale märgatavad ning ei tohiks katkeda aku säästmise või mälu puudumise korral.
Peamised omadused:
- Püsiv teatis kuvatakse teatiste alal. Kasutaja peaks nägema, et teenus töötab, ning võimalusel sellega suhelda.
- Süsteem on vähem tõenäoline, et lõpetab fooniteenuse võrreldes tavalise taustateenuse või voo, kuna sellel on kõrge prioriteet.
- Nõuab spetsiaalset luba
FOREGROUND_SERVICE. - Kasutatakse muusika esitamiseks, asukoha jälgimiseks, andmete reaalajas sünkroniseerimiseks.
Elutsükkel:
- Käivitatakse
startForegroundService()abil. - 5 sekundi jooksul tuleb kutsuda
startForeground(notificationId, notification), et teenus viia taustrežiimi. Vastasel juhul võib süsteem teenuse lõpetada ning visataForegroundServiceDidNotStartInTimeException. - Lõpetatakse
stopSelf()võistopService()abil teisest komponendist või kasutaja poolt teavituse kaudu. Lõpetamisel tuleb kutsudastopForeground(bool removeNotification)teavituse eemaldamiseks.
Näide:
// Õiguse saamine
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.FOREGROUND_SERVICE),
REQUEST_CODE_FOREGROUND_SERVICE
)
// Pärast õiguse saamist või kui see juba on
val serviceIntent = Intent(this, MyForegroundService::class.java)
ContextCompat.startForegroundService(this, serviceIntent)
Teenuse sees:
// MyForegroundService.kt
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val notification: Notification = createNotification() // Meetod teavituse loomiseks
startForeground(NOTIFICATION_ID, notification)
// Siin algab teenuse ülesande täitmine
return START_STICKY // Või muu sobiv lipp
}
override fun onDestroy() {
stopForeground(true) // Teavituse eemaldamine
// Ressursside vabastamine
super.onDestroy()
}