0

Firebase Job Dispatcher를 사용 중이며 https://github.com/firebase/firebase-jobdispatcher-android/blob/master/README.md에 설명 된 것과 같이 설정하고 있습니다.Firebase 작업 디스패처가있는 백그라운드에서 Http 요청 : 비동기식 또는 동기식?

예약 할 작업이 http 요청입니다. http 요청은 앱이 포 그라운드에있는 동안 (사용자가보고있는 동안) 또는 앱이 백그라운드에 있거나 시작되지 않은 상태에서 실행될 수 있습니다.

http 요청 (the okhttp library 사용)을 별도의 스레드/비동기에 넣어야합니까? 아니면 그냥 JobService에서 직접 호출 할 수 있습니까?

답변

1

JobServiceService으로 확장되어 주 스레드에서 실행됩니다. 따라서 직접 네트워크를 호출해서는 안됩니다. 그러나 직접 전화를 걸 수있는 SimpleJobService이 있습니다.

나는 SimpleJobService를 사용하여 당신이 here을 볼 수 있듯이 이미 자신의 방법으로 그것을 않기 때문에 JobServiceAsyncTask를 사용하는 것보다 더 나은 생각합니다.

+0

JobService 클래스 자체를 언급 해 주셔서 감사합니다. "이 서비스는 응용 프로그램의 주 스레드에서 실행중인 Handler에서 들어오는 각 작업을 실행합니다. 즉, 실행 논리를 다른 스레드/처리기/AsyncTask로 오프 로딩해야한다는 것을 의미합니다. 그렇게하지 않으면 다음과 같은 메시지가 나타납니다. JobManager (앞으로 onStopJob (android.app.job.JobParameters))에서 향후 콜백을 차단하게됩니다. 이는 일정 요구 사항이 더 이상 충족되지 않는다는 것을 알려주는 것입니다. " 따라서 네트워크 호출에는 자체 스레드가 있어야합니다. –

+1

맞습니다. OkHttp에 관해서는,'JobService' 내에 비동기'enqueue() 메소드를 호출하면 충분합니다. 'SimpleJobService'에서,'SimpleJobService'가 주어진 작업을 별도의'AsyncJobTask'에서 수행하기 때문에 동기'execute()'메소드를 직접 호출 할 수 있습니다. – Mehmed

+0

+1 SimpleJobService. 소스 코드 https://github.com/firebase/firebase-jobdispatcher-android/에서 찾았습니다. 이 수업을 어떻게 찾았습니까? github 계정의 README.md에서 API 문서 또는 javadoc를 찾을 수 없습니다. 이것에 대한 자세한 정보가 있습니까? –