ارسال درخواست‌های کار به سرویس پس‌زمینه‌ای

درس قبلی به شما نشان داد که چگونه کلاس JobIntentService ایجاد کنید. این درس به شما نشان می‌دهد که چگونه JobIntentService را برای اجرای عملیات با صف‌بندی کردن کار با Intent راه‌اندازی کنید. این Intent می‌تواند به‌طور اختیاری حاوی داده‌هایی برای پردازش JobIntentService باشد.

ایجاد و ارسال درخواست کار به JobIntentService

برای ایجاد درخواست کار و ارسال آن به JobIntentService، Intent ایجاد کنید و آن را در صف قرار دهید تا با فراخوانی enqueueWork() اجرا شود. درصورت تمایل می‌توانید داده‌هایی را به هدف (در قالب موارد اضافی هدف) اضافه کنید تا JobIntentService آن‌ها را پردازش کند. برای اطلاعات بیشتر درباره ایجاد قصدها، بخش «ساختن قصد» را در قصدها و فیلترهای قصد بخوانید

تکه‌کدهای زیر این فرایند را نشان می‌دهند:

  1. 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));
  2. تماس با 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 انجام دهید.