Middle
Kas ir fonu pakalpojums (priekšplāna pakalpojums) Android?
sobes.tech AI
Atbilde no AI
Fona pakalpojums (foreground service) ir Android veids pakalpojums ar paaugstinātu prioritāti, kas ir redzams lietotājam. Tas veic uzdevumus, kas ir pamanāmi lietotājam un nedrīkst tikt pārtraukts, taupot akumulatoru vai trūkstot atmiņas.
Galvenās īpašības:
- Pastāvīga paziņojuma parādīšana paziņojumu joslā. Lietotājs jāspēj redzēt, ka pakalpojums darbojas, un iespējams ar to sadarboties.
- Sistēma mazāk ticami pārtrauks fonu pakalpojumu salīdzinājumā ar parastu fonu pakalpojumu vai plūsmu, jo tam ir augsts prioritātes līmenis.
- Prasa īpašu atļauju
FOREGROUND_SERVICE. - Izmanto mūzikas atskaņošanai, atrašanās vietas uzraudzībai, datu sinhronizācijai reāllaikā.
Dzīves cikls:
- Sākas ar
startForegroundService(). - 5 sekunžu laikā jāizsauc
startForeground(notificationId, notification), lai pārvietotu pakalpojumu uz fonu. Pretējā gadījumā sistēma var pārtraukt pakalpojumu un izsistForegroundServiceDidNotStartInTimeException. - Pārtrauc ar
stopSelf()vaistopService()no cita komponenta vai obligāti lietotāja, caur paziņojumu. Pārtraucot, jāizsaucstopForeground(bool removeNotification)paziņojuma noņemšanai.
Piemērs:
// Atļaujas saņemšana
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.FOREGROUND_SERVICE),
REQUEST_CODE_FOREGROUND_SERVICE
)
// Pēc atļaujas saņemšanas vai ja tā jau ir
val serviceIntent = Intent(this, MyForegroundService::class.java)
ContextCompat.startForegroundService(this, serviceIntent)
Servisa iekšienē:
// MyForegroundService.kt
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val notification: Notification = createNotification() // Metode paziņojuma izveidei
startForeground(NOTIFICATION_ID, notification)
// Šeit sākas pakalpojuma uzdevuma izpilde
return START_STICKY // Vai cits piemērots karogs
}
override fun onDestroy() {
stopForeground(true) // Paziņojuma noņemšana
// Resursu atbrīvošana
super.onDestroy()
}