Sobes.tech
Intern

Android'de arka plan servisi ile arka plan servisi arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android 8.0 (API 26) ile birlikte, normal bir arka plan servisi ile kısıtlı (restricted) arka plan servisi arasındaki fark ortaya çıktı.

Normal arka plan servisi:

  • Arka planda sınırsız süre çalışabilir.
  • Sistem, kaynak yetersizliği durumunda durdurabilir, ancak onStartCommand() içinde START_STICKY döndürülürse yeniden başlatılabilir.
  • Kullanıcıya görünür bildirimler gerektirmez (ki bu UX açısından en iyi uygulama değildir).
  • Pil ve CPU kaynaklarını önemli ölçüde tüketebilir.

Kısıtlı arka plan servisi (kısıtlamalar uygulanır):

  • Görünür aktiviteler veya diğer "beyaz liste" (privilegeli koşullar) olmadan arka planda başlatılan servis, kaynak kullanımı üzerinde sınırlamalara tabidir.
  • Temel kısıtlamalar şunları içerir:
    • Arka planda çalışma sınırlaması: Uygulama arka plana geçtiğinde, sistem kısa süre içinde (genellikle birkaç dakika) servisi durdurabilir.
    • Yeni arka plan servislerinin başlatılmasının engellenmesi: Arka plandaki uygulama startService() kullanarak yeni arka plan servisleri başlatamaz. Bunun yerine JobScheduler veya WorkManager kullanılmalıdır.
    • Broadkast mesajlarının alınmasında sınırlama: Manifestteki dolaylı broadcast mesajları (implicit broadcasts) dikkate alınmaz. Uygulama açıkça broadcast alıcılarını kaydetmeli veya olayları işlemek için JobScheduler/WorkManager kullanmalıdır.
  • Bu kısıtlamaların amacı, pil ömrünü ve cihaz performansını artırmak, arka plan uygulamalarının kaynakları irrasyonel kullanmasını sınırlamaktır.

Bir servisin kısıtlamasız hale gelmesi (sistem gözünde aktif olması):

  • Uygulama ön planda (kullanıcı onunla aktif olarak etkileşimde bulunuyor).
  • Uygulama görünür bir servis başlatıyor (foreground service), bu da kullanıcının sürekli bildirim görmesini sağlar.
  • Uygulama belirli görevleri yerine getirir (örneğin, broadcast mesajlarını işler, JobScheduler görevlerini yürütür), bu da onu geçici olarak tam irrasyonel arka plan durumundan çıkarır.

Ana fark: Android 8.0 ve üzeri sürümlerde, kullanıcı görünür aktiviteleri veya görünür servis olmadan çalışan arka plan servisi, sistem tarafından kaynaklara erişim ve uzun süre çalışma konusunda kısıtlanacaktır. Android 8.0 öncesi normal "arka plan servisi" bu tür katı kısıtlamalar olmadan çalışabiliyordu.