Sobes.tech
Middle

Android-də fon xidməti (ön plan xidməti) nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Androidda ön plandakı xidmət (foreground service) yüksək prioritetə malik və istifadəçiyə görünən bir xidmət növüdür. İstifadəçi üçün nəzərə çarpan və batareya və ya yaddaş qənaəti üçün dayandırılmaması lazım olan tapşırıqları yerinə yetirir.

Əsas xüsusiyyətlər:

  • Bildiriş sahəsində davamlı bildiriş göstərir. İstifadəçi xidmətin işlədiyini görə və onunla qarşılıqlı əlaqə qura bilər.
  • Sistem, yüksək prioriteti səbəbindən adi fon xidməti və ya axına nisbətən ön plandakı xidməti daha az dayandıra bilər.
  • Xüsusi icazə FOREGROUND_SERVICE tələb edir.
  • Musiqi ifası, yerin izlənməsi, real vaxtda məlumatların sinxronizasiyası kimi tapşırıqlar üçün istifadə olunur.

Həyat dövrü:

  1. startForegroundService() ilə başlayır.
  2. 5 saniyə ərzində startForeground(notificationId, notification) çağırılmalıdır ki, xidmət ön plana keçsin. Əks halda, sistem xidməti dayandıra və ForegroundServiceDidNotStartInTimeException ata bilər.
  3. stopSelf() və ya başqa bir komponentdən stopService() və ya istifadəçi tərəfindən bildiriş vasitəsilə məcburi dayandırılır. Dayandırıldıqda, bildirişi silmək üçün stopForeground(bool removeNotification) çağırılmalıdır.

Başlanğıc nümunəsi:

// İcazə almaq
ActivityCompat.requestPermissions(
    this,
    arrayOf(Manifest.permission.FOREGROUND_SERVICE),
    REQUEST_CODE_FOREGROUND_SERVICE
)

// İcazə alındıqdan sonra və ya artıq varsa
val serviceIntent = Intent(this, MyForegroundService::class.java)
ContextCompat.startForegroundService(this, serviceIntent)

Xidmət daxilində:

// MyForegroundService.kt
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
    val notification: Notification = createNotification() // Bildiriş yaratma metodu
    startForeground(NOTIFICATION_ID, notification)
    // Burada xidmətin tapşırığı başlayır
    return START_STICKY // və ya başqa uyğun bayraq
}

override fun onDestroy() {
    stopForeground(true) // Dayandırarkən bildirişi sil
    // Resursların təmizlənməsi
    super.onDestroy()
}