Cronet を使用して作成されたリクエストのライフサイクルと、ライブラリで提供されるコールバック メソッドを使用してリクエストを管理する方法について説明します。
ライフサイクルの概要
Cronet ライブラリを使用して作成されたネットワーク リクエストは、UrlRequest
クラスで示されます。UrlRequest
のライフサイクルを理解するうえで、次のコンセプトは重要です。
- 状態
- 状態とは、特定の時間におけるリクエストの特定条件です。Cronet ライブラリを使用して作成された UrlRequest オブジェクトは、そのライフサイクル内でさまざまな状態を遷移します。リクエストのライフサイクルには、初期状態、複数の遷移状態、最終状態が含まれます。
UrlRequest
メソッド- クライアントは、状態に応じて
UrlRequest
オブジェクトの特定メソッドを呼び出すことができます。メソッドはリクエストを別の状態に遷移します。 Callback
メソッドUrlRequest.Callback
メソッドを実装することで、リクエストの進行状況に関する最新情報をアプリで受け取ることができます。コールバック メソッドを実装し、UrlRequest
オブジェクトのメソッドを呼び出して、ライフサイクルを別の状態に遷移することができます。
次のリストは、UrlRequest
ライフサイクルのフローについて説明しています。
- アプリで
start()
メソッドを呼び出した後、ライフサイクルは Started 状態になります。 - サーバーはリダイレクト レスポンス(
onRedirectReceived()
メソッドにフローを転送する)を送信する場合もあります。このメソッドでは、次のいずれかのクライアント アクションを実施できます。followRedirect()
を使用してリダイレクトをたどります。このメソッドは、リクエストを Started 状態に戻します。- リクエストをキャンセルするには
cancel()
を使用します。このメソッドは、リクエストをonCanceled()
メソッド(リクエストが Canceled 最終状態に移行する前にアプリで追加のオペレーションを実施できる)に渡します。
- アプリがすべてのリダイレクトをたどった後、サーバーはレスポンス ヘッダーを送信し、
onResponseStarted()
メソッドが呼び出されます。リクエストは Waiting for read() 状態になります。アプリは、read()
メソッドを呼び出し、レスポンス本文の一部を読み取ろうとします。read()
が呼び出されると、リクエストは Reading 状態になり、次のような結果が予想されます。- 読み取りアクションは成功しましたが、使用可能なデータがさらにあります。
onReadCompleted()
が呼び出され、リクエストが Waiting for read() 状態に戻りました。アプリは、read()
メソッドを再度呼び出して、レスポンス本文の読み取りを続行する必要があります。また、cancel()
メソッドを使用してリクエストの読み取りを停止することも可能です。 - 読み取りアクションが成功し、使用可能なデータは残っていません。
onSucceeded()
メソッドが呼び出され、リクエストの最終状態は現在 Succeeded です。 - 読み取りアクションが失敗しました。
onFailed
メソッドが呼び出され、リクエストの最終状態は現在 Failed です。
- 読み取りアクションは成功しましたが、使用可能なデータがさらにあります。
次の図は、UrlRequest
オブジェクトのライフサイクルを示します。
Cronet リクエストのライフサイクル
凡例 | |
---|---|
UrlRequest メソッド |