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

บทเรียนก่อนหน้านี้แสดงวิธีสร้างชั้นเรียน 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);
    

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

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

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