백그라운드 서비스에 작업 요청 보내기

이전 과정에서는 JobIntentService 클래스를 만드는 방법을 보았습니다. 이 과정에서는 Intent로 작업을 큐에 추가하여 작업을 실행하도록 JobIntentService를 트리거하는 방법을 보여줍니다. 이 IntentJobIntentService에서 처리할 데이터를 선택적으로 포함할 수 있습니다.

작업 요청을 만들어 JobIntentService에 전송

작업 요청을 만들어 JobIntentService에 전송하려면 Intent를 만들고 enqueueWork()를 호출하여 실행되도록 큐에 추가합니다. 선택적으로 JobIntentService가 처리할 인텐트에 데이터를 인텐트 추가 항목으로 추가할 수 있습니다. 인텐트 만들기에 관한 자세한 내용은 인텐트 및 인텐트 필터의 인텐트 빌드 섹션을 참고하세요.

다음 코드 스니펫은 이 프로세스를 보여줍니다.

  1. JobIntentServiceRSSPullService라는 새 Intent를 만듭니다.

    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로 이 작업을 실행하는 방법을 보여줍니다.