백그라운드 서비스에 작업 요청 전송

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

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

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

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

  1. RSSPullService라고 하는 JobIntentService의 새 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)
        }
        

    자바

        /*
         * 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)
        

    자바

        // Starts the JobIntentService
        private static final int RSS_JOB_ID = 1000;
        RSSPullService.enqueueWork(getContext(), RSSPullService.class, RSS_JOB_ID, serviceIntent);
        

활동이나 프래그먼트의 어디에서나 작업 요청을 전송할 수 있습니다. 예를 들어, 사용자 입력을 먼저 가져와야 한다면 버튼 클릭이나 유사한 동작에 응답하는 콜백에서 요청을 전송할 수 있습니다.

enqueueWork()를 호출하면 JobIntentServiceonHandleWork() 메서드에 정의된 작업을 실행한 다음 자체적으로 중지합니다.

다음 단계는 작업 요청의 결과를 원래 활동이나 프래그먼트에 다시 보고하는 것입니다. 다음 과정에서는 BroadcastReceiver로 이 작업을 실행하는 방법을 보여줍니다.