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

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

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

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

قطعه کد زیر این فرآیند را نشان می دهد:

  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);
    

توجه داشته باشید که می‌توانید درخواست کار را از هر جایی در یک Activity یا Fragment ارسال کنید. برای مثال، اگر ابتدا باید ورودی کاربر را دریافت کنید، می‌توانید درخواست را از یک تماس پاسخ دهید که به کلیک دکمه یا حرکت مشابه پاسخ می‌دهد.

زمانی که enqueueWork() را فراخوانی کردید، JobIntentService کار تعریف شده در متد onHandleWork() را انجام می دهد و سپس خود را متوقف می کند.

مرحله بعدی گزارش نتایج درخواست کار به Activity یا Fragment مبدا است. درس بعدی به شما نشان می دهد که چگونه این کار را با یک BroadcastReceiver انجام دهید.