Sobes.tech
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:

  1. Käivitatakse startForegroundService() abil.
  2. 5 sekundi jooksul tuleb kutsuda startForeground(notificationId, notification), et teenus viia taustrežiimi. Vastasel juhul võib süsteem teenuse lõpetada ning visata ForegroundServiceDidNotStartInTimeException.
  3. Lõpetatakse stopSelf() või stopService() abil teisest komponendist või kasutaja poolt teavituse kaudu. Lõpetamisel tuleb kutsuda stopForeground(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()
}