שליחת בקשות עבודה לשירות הרקע

בשיעור הקודם למדתם איך ליצור JobIntentService. הזה יראו לכם איך להפעיל JobIntentService כדי להריץ פעולה עד הוספת עבודה לתור עם Intent. המכשיר Intent יכול להכיל נתונים עבור הפונקציה JobIntentService לעיבוד.

יצירה ושליחה של בקשת עבודה אל JobIntentService

כדי ליצור בקשת עבודה ולשלוח אותה אל JobIntentService ליצור Intent ולהעביר אותו לתור יבוצע באמצעות קריאה enqueueWork(). אפשר גם להוסיף נתונים ל-Intent (כתוספת Intent) עבור JobIntentService לעיבוד. למידע נוסף על יצירת כוונות, אפשר לקרוא את הקטע Intent במסננים של Intent ו-Intent

קטעי הקוד הבאים מדגימים את התהליך הזה:

  1. ליצור Intent חדש עבור JobIntentService התקשרה אל RSSPullService.

    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));
    
  2. שיחה 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);
    

שימו לב שניתן לשלוח את בקשת העבודה מכל מקום בפעילות או במקטע. לדוגמה, אם אתם צריכים לקבל קודם משוב מהמשתמשים, אפשר לשלוח את הבקשה דרך קריאה חוזרת שמגיבה ללחיצה על לחצן או לתנועה דומה.

אחרי שמתקשרים אל enqueueWork(), ה JobIntentService עושה את העבודה שמוגדרת onHandleWork() ולאחר מכן מפסיקה את עצמה.

השלב הבא הוא לדווח על תוצאות בקשת העבודה בחזרה לפעילות המקור או מקטע. בשיעור הבא תלמדו איך לעשות זאת BroadcastReceiver