ส่งคำของานไปยังบริการในเบื้องหลัง

บทเรียนก่อนหน้านี้ได้แสดงให้คุณเห็นถึงวิธีการสร้าง 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);
    

โปรดทราบว่าคุณส่งคำของานได้จากทุกที่ในกิจกรรมหรือ Fragment ตัวอย่างเช่น หากต้องการข้อมูลจากผู้ใช้ก่อน คุณสามารถส่งคำขอจาก Callback ได้ ที่ตอบสนองต่อการคลิกปุ่มหรือท่าทางสัมผัสที่คล้ายกัน

เมื่อคุณโทรติดต่อ enqueueWork(), JobIntentService ทำงานที่ระบุไว้ใน onHandleWork() จากนั้นจะหยุดตัวเอง

ขั้นตอนถัดไปคือการรายงานผลลัพธ์ของคำของานกลับไปยังกิจกรรมที่ต้นทาง หรือส่วนย่อย บทเรียนถัดไปจะแสดงวิธีทำด้วย BroadcastReceiver