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

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

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

כדי ליצור בקשת עבודה ולשלוח אותה אל JobIntentService, יוצרים Intent ומעבירים אותו לתור לביצוע באמצעות קריאה ל- enqueueWork(). אפשר גם להוסיף נתונים ל-Intent (כתוספת Intent) כדי לעבד את JobIntentService. למידע נוסף על יצירת כוונות, אפשר לקרוא את הקטע 'יצירת 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);
    

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

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

השלב הבא הוא לדווח על תוצאות בקשת העבודה בחזרה לפעילות או ל-Fragment המקוריים. בשיעור הבא נסביר איך לעשות זאת באמצעות BroadcastReceiver.