Android`de JobSchedular

Begum Avci Kocaman
Huawei Developers - Türkiye
3 min readOct 31, 2023
JobScheduler-1

Giriş

Android’deki JobScheduler, arka planda çalışacak görevleri planlamak için kullanılan bir sistem hizmetidir. Benzer görevleri gruplayarak çalıştırma ve cihazın kaynaklarını daha etkili bir şekilde kullanma yeteneğine sahiptir.

Android’deki JobScheduler'ın anahtar bileşenleri şunlardır:

  1. JobInfo: Bir görevin çalışma kriterlerini tanımlar. Bu, ağ durumu, şarj durumu, bekleyen Wi-Fi bağlantısı ve benzeri gibi faktörlere dayalı olarak bir görevin ne zaman çalışacağını belirler.
  2. JobScheduler: Sistem hizmetidir ve görevlerin planlanmasını, yönetilmesini ve izlenmesini sağlar. JobScheduler'ın ana noktalarından biridir.
  3. JobService: Bu sınıf, bir görevin gerçek çalışmasını tanımlar. JobScheduler, bir görev başladığında bu servisi başlatır. Uygulamanızın bu servisi uygulaması gerekir.

Bu üç bileşen, JobScheduler'ın işlevselliğini sağlamak için bir arada çalışır. JobInfo, bir görevin nasıl çalışacağını tanımlar, JobService görevin gerçek işini yapar ve JobScheduler bu görevleri planlar ve yönetir.

Şimdi Kotlin kullanarak bir örnek yapalım:

Adım 1: Bir JobService Oluşturma

Adım 2: JobScheduler’ı Ayarlama

Bu örnekte, MyJobService adında basit bir JobService oluşturduk. Görev başladığında ( onStartJob içinde), bir mesajı log'a yazıyoruz. Bunun yerine gerçek arka plan işinizi buraya koyacaksınız.

MainActivity’de, görevin çalışması için koşulları belirten bir JobInfo nesnesi oluşturduk (bu örnekte, şarj oluyor olma ve herhangi bir ağ tipi gerekliliği belirttik). Daha sonra JobScheduler'ı kullanarak bu görevi planladık.

AndroidManifest.xml dosyasına MyJobService'i eklemeyi unutmayın:

JobScheduler-2

Android’deki JobScheduler'ın neden gerekliliği bulunduğunu anlamak için şu ana başlıkları göz önünde bulundurabiliriz:

  1. Batarya Verimliliği: Android cihazlarının batarya ömrünü korumak önemlidir. JobScheduler, benzer görevleri gruplandırarak, bunları ayrı ayrı çalıştırmak yerine daha verimli bir şekilde çalıştırılmasını sağlar. Bu, genellikle batarya ömrünü uzatır.
  2. Ağ Koşullarına Bağlı Çalışma: JobScheduler ile bir görevin ne zaman çalışacağını belirlemek için ağ bağlantısı koşulları belirtilebilir. Örneğin, belirli bir görevin sadece Wi-Fi bağlantısı olduğunda çalıştırılmasını sağlayabilirsiniz.
  3. Şarj Durumu: Belirli bir görevin sadece cihaz şarjdayken çalıştırılmasını sağlayabilirsiniz. Bu, enerji tüketen işlemlerin daha verimli bir şekilde yürütülmesini sağlar.
  4. Boşta Durum: Cihaz boşta olduğunda çalışacak görevlerin planlanmasına izin verir. Bu, cihazın aktif olarak kullanılmadığı zamanlarda işleri gerçekleştirmek için idealdir.
  5. Benzer Görevlerin Gruplanması: JobScheduler, benzer görevleri gruplandırarak, sistem kaynaklarının daha verimli kullanılmasını sağlar. Bu, genel sistem performansını artırabilir.
  6. Doze Modu Uyumluluğu: Android’in Doze modu ile uyumludur. Bu, cihazın düşük güç modunda olduğu zamanlarda bile görevlerin planlanabilmesi anlamına gelir.
  7. Kullanıcı Tercihlerine Saygı: JobScheduler, kullanıcının arka plandaki görevler hakkındaki tercihlerine ve sistem politikalarına saygı gösterir. Bu, daha kullanıcı dostu bir deneyim yaratmaya yardımcı olur.
  8. Uyanık Durumları Engelleme: Geleneksel hizmetlerin aksine, JobScheduler ile planlanan görevler, cihazın sürekli uyanık kalmasını önler. Bu, batarya ömrünü uzatabilir.
  9. Otomatik Yeniden Deneme ve Bekleme Politikaları: Başarısız görevler için otomatik yeniden deneme ve bekletme politikalarını yönetir. Bu, manuel hata yönetimine ihtiyaç duymadan işlemleri daha güvenilir hale getirebilir.
  10. Esnek Aralık Desteği: Bir görevin çalışabileceği esnek zaman aralığını belirtme yeteneğine sahiptir. Bu, zaman açısından hassas olmayan işler için kullanışlıdır.
JobScheduler-3

Sonuç

JobScheduler, geliştiricilere daha güç tasarruflu ve sistem koşullarına daha duyarlı uygulamalar oluşturmalarına yardımcı olur, bu da Android cihazlarda daha iyi bir kullanıcı deneyimi sunar. Ancak unutulmamalıdır ki, Android 8.0 (API seviyesi 26) ve sonrasında, JobScheduler dahil olmak üzere arka planda çalışan hizmetler daha sıkı sınırlamalara tabidir. Bu nedenle, daha yoğun arka plan işleri için kullanım senaryonuza bağlı olarak WorkManager veya diğer arka plan işleme yöntemlerini düşünmek önemlidir.

--

--