درس قبلی به شما نشان داد که چگونه یک کلاس JobIntentService
ایجاد کنید. این درس به شما نشان می دهد که چگونه JobIntentService
را برای اجرای یک عملیات با قرار دادن کار با یک Intent
راه اندازی کنید. این Intent
می تواند به صورت اختیاری حاوی داده هایی برای پردازش JobIntentService
باشد.
ایجاد و ارسال یک درخواست کاری به JobIntentService
برای ایجاد یک درخواست کاری و ارسال آن به JobIntentService
، یک Intent
ایجاد کنید و با فراخوانی enqueueWork()
آن را در صف قرار دهید تا اجرا شود. به صورت اختیاری میتوانید دادههایی را به intent (به شکل موارد اضافی قصد) برای پردازش JobIntentService اضافه کنید. برای اطلاعات بیشتر در مورد ایجاد intent، بخش ساختن یک هدف را در Intent و Intent Filters بخوانید.
قطعه کد زیر این فرآیند را نشان می دهد:
- یک
Intent
جدید برایJobIntentService
به نامRSSPullService
ایجاد کنید.کاتلین
/* * 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) }
جاوا
/* * 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));
- فراخوانی
enqueueWork()
کاتلین
private const val RSS_JOB_ID = 1000 RSSPullService.enqueueWork(context, RSSPullService::class.java, RSS_JOB_ID, serviceIntent)
جاوا
// Starts the JobIntentService private static final int RSS_JOB_ID = 1000; RSSPullService.enqueueWork(getContext(), RSSPullService.class, RSS_JOB_ID, serviceIntent);
توجه داشته باشید که میتوانید درخواست کار را از هر جایی در یک Activity یا Fragment ارسال کنید. برای مثال، اگر ابتدا باید ورودی کاربر را دریافت کنید، میتوانید درخواست را از یک تماس پاسخ دهید که به کلیک دکمه یا حرکت مشابه پاسخ میدهد.
زمانی که enqueueWork()
را فراخوانی کردید، JobIntentService
کار تعریف شده در متد onHandleWork()
را انجام می دهد و سپس خود را متوقف می کند.
مرحله بعدی گزارش نتایج درخواست کار به Activity یا Fragment مبدا است. درس بعدی به شما نشان می دهد که چگونه این کار را با یک BroadcastReceiver
انجام دهید.