Middle
Android-ში ფონური სერვისი (წინა სერვისი) რა არის?
sobes.tech AI
პასუხი AI-სგან
ფონური სერვისი (foreground service) — ეს Android-ის ტიპის სერვისია, რომელსაც აქვს მაღალი პრიორიტეტი და რომელიც ჩანს მომხმარებლისთვის. ის ასრულებს ამოცანებს, რომლებიც თვალსაჩინოა მომხმარებლისთვის და არ უნდა შეწყდეს ბატარეის დაზოგვის ან მეხსიერების ნაკლებობის დროს.
ძირითადი მახასიათებლები:
- მუდმივი შეტყობინების ჩვენება შეტყობინებების ზოლში. მომხმარებელმა უნდა შეძლოს ნახოს, რომ სერვისი მუშაობს, და შესაძლო ურთიერთქმედება.
- სისტემას ნაკლებად სავარაუდოა, რომ შეწყვიტოს ფონი სერვისი ჩვეულებრივ ფონი სერვისთან ან ნაკადთან შედარებით, მისი მაღალი პრიორიტეტის გამო.
- საჭიროებს სპეციალურ ნებართვას
FOREGROUND_SERVICE. - გამოიყენება მუსიკის მოსმენის, მდებარეობის მონიტორინგის, მონაცემთა სინქრონიზაციისთვის რეალურ დროში.
ციკლი:
- იწყება
startForegroundService()-ის გამოყენებით. - 5 წამში უნდა გამოიძახოს
startForeground(notificationId, notification), რათა სერვისი გადაიტანოს ფონის რეჟიმში. წინააღმდეგ შემთხვევაში სისტემა შეიძლება შეწყვიტოს სერვისი და გამოიწვიოსForegroundServiceDidNotStartInTimeException. - შეჩერება ხდება
stopSelf()ანstopService()-ის გამოყენებით სხვა კომპონენტიდან, ან მომხმარებლის მიერ შეტყობინების საშუალებით. შეჩერების დროს საჭიროა გამოიძახოსstopForeground(bool removeNotification)შეტყობინების წასაშლელად.
საწყისი მაგალითი:
// ნებართვის მიღება
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.FOREGROUND_SERVICE),
REQUEST_CODE_FOREGROUND_SERVICE
)
// ნებართვის მიღების ან თუ ის უკვე არსებობს
val serviceIntent = Intent(this, MyForegroundService::class.java)
ContextCompat.startForegroundService(this, serviceIntent)
სერვისის შიგნით:
// MyForegroundService.kt
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val notification: Notification = createNotification() // შეტყობინების შექმნის მეთოდი
startForeground(NOTIFICATION_ID, notification)
// აქ იწყება სერვისის ამოცანის შესრულება
return START_STICKY // ან სხვა შესაბამისი ფლაგი
}
override fun onDestroy() {
stopForeground(true) // შეტყობინების წაშლა
// რესურსების განთავისუფლება
super.onDestroy()
}