Önceki derste JobIntentService
sınıfının nasıl oluşturulacağı gösteriliyordu. Bu derste bir Intent
ile çalışmayı sıraya alarak bir işlem çalıştırmak için JobIntentService
'ı nasıl tetikleyeceğiniz gösterilmektedir.
Bu Intent
, isteğe bağlı olarak JobIntentService
için işlenecek veriler içerebilir.
İş isteği oluşturma ve JobIntentService'e gönderme
İş isteği oluşturup JobIntentService
'e göndermek için Intent
oluşturup
enqueueWork()
çağrısı yaparak yürütülmesi için sıraya koyun.
İsteğe bağlı olarak, JobIntentService'in işlemesi için amaca veri (amaç ekstraları biçiminde) ekleyebilirsiniz. Niyet oluşturma hakkında daha fazla bilgi için Amaçlar ve Amaç Filtreleri bölümündeki Amaç oluşturma bölümünü okuyun
Aşağıdaki kod snippet'leri bu işlemi gösterir:
-
JobIntentService
içinRSSPullService
adlı yeni birIntent
oluşturun.
Kotlin
/* * Creates a new Intent to start the RSSPullService * JobIntentService. Passes a URI in the * Intent's "data" field. */ serviceIntent = Intent().apply { putExtra("download_url", dataUrl) }
Java
/* * Creates a new Intent to start the RSSPullService * JobIntentService. Passes a URI in the * Intent's "data" field. */ serviceIntent = new Intent(); serviceIntent.putExtra("download_url", dataUrl));
-
Telefon et:
enqueueWork()
Kotlin
private const val RSS_JOB_ID = 1000 RSSPullService.enqueueWork(context, RSSPullService::class.java, RSS_JOB_ID, serviceIntent)
Java
// Starts the JobIntentService private static final int RSS_JOB_ID = 1000; RSSPullService.enqueueWork(getContext(), RSSPullService.class, RSS_JOB_ID, serviceIntent);
İş isteğini bir Etkinlik veya Parça içinde herhangi bir yerden gönderebileceğinize dikkat edin. Örneğin, önce kullanıcı girişi almanız gerekiyorsa isteği bir düğme tıklamasına veya benzer bir harekete yanıt veren bir geri çağırmadan gönderebilirsiniz.
enqueueWork()
çağırdığınızda
JobIntentService
,
onHandleWork()
yönteminde tanımlanan işi yapar ve ardından kendini durdurur.
Bir sonraki adım, çalışma isteğinin sonuçlarını kaynak Etkinlik veya Parçaya geri bildirmektir. Sonraki derste, BroadcastReceiver
ile bunu nasıl yapacağınız gösterilmektedir.