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です。

私はあなたがhereを見ることができるように、それはすでに独自の方法でそれをしないので、SimpleJobServiceを使用してJobServiceAsyncTaskを使用するよりも優れていると思います。

+0

JobServiceクラス自体について言及してくれてありがとう。私はJobService上のDocumentatononderdelenをチェックしました。「このサービスは、アプリケーションのメインスレッド上で実行されている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が見つかりませんでした。これについてさらに情報がありますか? –

関連する問題