درس قبلی به شما نشان داد که چگونه کلاس
JobIntentService ایجاد کنید. این
درس به شما نشان میدهد که چگونه
JobIntentService را برای اجرای عملیات با
صفبندی کردن کار با Intent راهاندازی کنید.
این Intent میتواند
بهطور اختیاری حاوی دادههایی برای پردازش
JobIntentService باشد.
ایجاد و ارسال درخواست کار به JobIntentService
برای ایجاد درخواست کار و ارسال آن به
JobIntentService،
Intent ایجاد کنید و آن را در صف قرار دهید تا
با فراخوانی
enqueueWork() اجرا شود.
درصورت تمایل میتوانید دادههایی را به هدف (در قالب موارد اضافی هدف) اضافه کنید تا
JobIntentService آنها را پردازش کند. برای اطلاعات بیشتر درباره ایجاد قصدها، بخش «ساختن قصد» را در قصدها و فیلترهای قصد بخوانید
تکهکدهای زیر این فرایند را نشان میدهند:
-
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);
توجه داشته باشید که میتوانید درخواست کار را از هرجایی در «فعالیت» یا «قطعه» ارسال کنید. برای مثال، اگر ابتدا باید ورودی کاربر را دریافت کنید، میتوانید درخواست را از یک فراخوانی برگشتی ارسال کنید که به کلیک روی دکمه یا اشاره مشابه پاسخ میدهد.
وقتی
enqueueWork() را فراخوانی میکنید،
JobIntentService کار تعریفشده در روش
onHandleWork() خود را انجام میدهد و سپس متوقف میشود.
مرحله بعدی گزارش نتایج درخواست کار به «فعالیت» یا «قطعه» مبدأ است. درس بعدی به شما نشان میدهد که چگونه این کار را با
BroadcastReceiver انجام دهید.