Sobes.tech
Junior

Jak zastavit službu v Androidu?

sobes.tech AI

Odpověď od AI

Existuje několik způsobů, jak zastavit službu v Androidu:

  • stopSelf(): Volá se uvnitř služby, aby ji zastavila.
  • stopService(Intent service): Volá se zvenčí služby (například z Activity) s předáním záměru, který se použil k jejímu spuštění.
  • stopSelfResult(int startId): Podobně jako stopSelf(), ale vrací true nebo false v závislosti na tom, zda byla služba úspěšně zastavena. Používá se k zajištění zastavení i při současných požadavcích na spuštění.

Kromě explicitního zastavení může služba ukončit svou práci, pokud ji systém zničí kvůli nedostatku zdrojů nebo z jiných důvodů.

// Příklad zastavení služby zevnitř
override fun onDestroy() {
    super.onDestroy()
    // Vyčištění zdrojů
}

// Uvnitř metody služby, například po dokončení úkolu
fun performBackgroundTask() {
    // ...provádění úkolu...
    stopSelf() // Zastavit službu po dokončení
}
// Příklad zastavení služby z Activity
fun stopMyService() {
    val serviceIntent = Intent(this, MyService::class.java)
    stopService(serviceIntent)
}

Je důležité poznamenat, že pro služby spuštěné pomocí startService() se doporučuje používat stopSelf() nebo stopService() k jejich ukončení. Pro služby navázané pomocí bindService() je jejich životní cyklus vázán na životní cyklus klienta a jsou automaticky ukončeny, když se všichni klienti odpojí.