CronetEngine

public abstract class CronetEngine

既知の直接サブクラス
既知の間接的なサブクラス
JavaCronetEngine

java.net.HttpURLConnection をバックアップした CronetEngine。


現在のプラットフォームで利用可能な最適な HTTP スタックを使用する UrlRequest を処理するエンジン。このクラスのインスタンスは、Builder を使用して作成できます。

概要

ネストされた型

CronetEngine のビルダー。 CronetEngine のランタイム構成を可能にします。

cronet ネイティブ ライブラリを読み込むメソッドを提供するクラス。

定数

static final int

アクティブなリクエスト数の値が不明

static final int

接続指標の値が不明です。

static final int

有効な接続タイプの推定値は 2G です。

static final int

有効な接続タイプの推定値は 3G です。

static final int

効果的な接続タイプの推定値は 4G です。

static final int

デバイスがオフラインです。

static final int

効果的な接続タイプの推定値は 2G 低速です。

static final int

有効な接続タイプの推定値が不明です。

static final long

以前のネットワーク バインディングを元に戻すために使用する値。

パブリック コンストラクタ

パブリック メソッド

void

各リクエストの終了後にリクエスト情報とともに呼び出されるリスナーを登録します。

void

ネットワーク品質推定ツールがサンプル ラウンドトリップ時間を検出するたびに呼び出されるリスナーを登録します。

void

ネットワーク品質推定ツールがスループット測定のサンプルを検出するたびに呼び出されるリスナーを登録します。

void
bindToNetwork(long networkHandle)

エンジンを指定されたネットワーク ハンドルにバインドします。

void
configureNetworkQualityEstimatorForTesting(
    boolean useLocalHostRequests,
    boolean useSmallerResponses,
    boolean disableOfflineCheck
)

テスト用にネットワーク品質推定ツールを構成します。

abstract URLStreamHandlerFactory

HTTP トラフィックと HTTPS トラフィックを処理する URLStreamHandlerFactory を作成します。

int

アクティブなリクエストの数を返します。

int

ネットワーク品質推定ツールによって計算されたダウンストリーム スループットの推定値(kbps 単位)を返します。

int

ネットワーク品質推定ツールによって計算された有効な接続タイプの推定値を返します。

abstract byte[]

このメソッドは非推奨です。

Cronet の最新バージョンでは、常に空の配列が返されます。

int

ネットワーク品質推定ツールによって計算された HTTP RTT の推定値(ミリ秒単位)を返します。

int

ネットワーク品質推定ツールによって計算された転送 RTT の推定値(ミリ秒単位)を返します。

abstract String
abstract UrlRequest.Builder
newUrlRequestBuilder(
    String url,
    UrlRequest.Callback callback,
    Executor executor
)

UrlRequest のビルダーを作成します。

abstract URLConnection

URLurl で指定されたリソースへの新しい接続を確立します。

void

完了したリクエスト リスナーを削除します。

void

addRttListener で以前に登録された往復時間のリスナーを削除します。

void

スループットのリスナーを削除します。

abstract void

アクティブなリクエストがない場合は CronetEngine をシャットダウンし、それ以外の場合は例外をスローします。

void
startNetLogToDisk(String dirPath, boolean logAll, int maxSize)

指定されたディレクトリに、サイズ制限付きで NetLog ロギングを開始します。

abstract void
startNetLogToFile(String fileName, boolean logAll)

NetLog のファイルへのロギングを開始します。

abstract void

NetLog のロギングを停止し、ファイルをディスクにフラッシュします。

定数

ACTIVE_REQUEST_COUNT_UNKNOWN

public static final int ACTIVE_REQUEST_COUNT_UNKNOWN = -1

アクティブなリクエスト数の値が不明

CONNECTION_METRIC_UNKNOWN

public static final int CONNECTION_METRIC_UNKNOWN = -1

接続指標の値が不明です。

EFFECTIVE_CONNECTION_TYPE_2G

public static final int EFFECTIVE_CONNECTION_TYPE_2G = 3

効果的な接続タイプの推定値は 2G です。

EFFECTIVE_CONNECTION_TYPE_3G

public static final int EFFECTIVE_CONNECTION_TYPE_3G = 4

有効な接続タイプの推定値は 3G です。

EFFECTIVE_CONNECTION_TYPE_4G

public static final int EFFECTIVE_CONNECTION_TYPE_4G = 5

効果的な接続タイプの推定値は 4G です。

EFFECTIVE_CONNECTION_TYPE_OFFLINE

public static final int EFFECTIVE_CONNECTION_TYPE_OFFLINE = 1

デバイスがオフラインです。

EFFECTIVE_CONNECTION_TYPE_SLOW_2G

public static final int EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 2

効果的な接続タイプの推定値が 2G 低速である。

EFFECTIVE_CONNECTION_TYPE_UNKNOWN

public static final int EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0

有効な接続タイプの推定値が不明です。

UNBIND_NETWORK_HANDLE

public static final long UNBIND_NETWORK_HANDLE = -1

以前のネットワーク バインディングを元に戻すために使用する値。

パブリック コンストラクタ

CronetEngine

public CronetEngine()

パブリック メソッド

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

各リクエストの終了後にリクエスト情報とともに呼び出されるリスナーを登録します。

リスナーは、リスナーが提供する java.util.concurrent.Executor で呼び出されます。

パラメータ
RequestFinishedInfo.Listener listener

完了したリクエストのリスナー。

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

ネットワーク品質推定ツールがサンプル ラウンドトリップ時間を検出するたびに呼び出されるリスナーを登録します。これは enableNetworkQualityEstimator の後に呼び出す必要があり、それ以外の場合は例外をスローします。ラウンドトリップ時間は、TCP、QUIC、URL リクエスト レイヤなど、ネットワーク スタックのさまざまなレイヤで記録されることがあります。リスナーは、enableNetworkQualityEstimator に渡された java.util.concurrent.Executor で呼び出されます。

パラメータ
NetworkQualityRttListener listener

ラウンドトリップ時間のリスナー。

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

ネットワーク品質推定ツールがスループットの測定値を検出するたびに呼び出されるリスナーを登録します。これは enableNetworkQualityEstimator の後に呼び出す必要があります。スループットの測定値は、少なくとも 1 つの URL レスポンスが受信されているときに、アクティブなネットワーク インターフェースで読み取られたバイト数を測定することで計算されます。リスナーは、enableNetworkQualityEstimator に渡された java.util.concurrent.Executor で呼び出されます。

パラメータ
NetworkQualityThroughputListener listener

スループットのリスナー。

bindToNetwork

public void bindToNetwork(long networkHandle)

エンジンを指定されたネットワーク ハンドルにバインドします。このエンジンで作成されたすべてのリクエストは、このハンドルに関連付けられたネットワークを使用します。このネットワークが切断されると、すべてのリクエストが失敗します。エラーの内容は、ネットワークが切断されたときのリクエスト処理の段階によって異なります。ネットワーク ハンドルは Network#getNetworkHandle を介して取得できます。Android Marshmallow 以降でのみ利用可能です。

パラメータ
long networkHandle

エンジンをバインドするネットワーク ハンドル。バインドを解除するには、UNBIND_NETWORK_HANDLE を指定します。

configureNetworkQualityEstimatorForTesting

public void configureNetworkQualityEstimatorForTesting(
    boolean useLocalHostRequests,
    boolean useSmallerResponses,
    boolean disableOfflineCheck
)

テスト用にネットワーク品質推定ツールを構成します。これは、往復時間とスループットのリスナーが追加される前、かつネットワーク品質推定ツールが有効になった後に呼び出す必要があります。

パラメータ
boolean useLocalHostRequests

localhost へのリクエストを見積もりに含める。

boolean useSmallerResponses

スループットの見積もりに小さなレスポンスを含めます。

boolean disableOfflineCheck

true に設定すると、有効な接続タイプを計算するときや設定を書き込むときに、デバイスのオフライン チェックが無効になります。

createURLStreamHandlerFactory

public abstract URLStreamHandlerFactory createURLStreamHandlerFactory()

HTTP トラフィックと HTTPS トラフィックを処理する URLStreamHandlerFactory を作成します。このクラスのインスタンスは setURLStreamHandlerFactory を介してインストールできます。これにより、openConnection を介して作成されたすべてのリクエストで、この CronetEngine がデフォルトで使用されます。

Cronet は、システムから提供される特定の HTTP 機能を使用しません。

  • HttpResponseCache.install() を介してインストールされた HTTP キャッシュ
  • setDefault を介してインストールされた HTTP 認証方法
  • setDefault を介してインストールされた HTTP Cookie ストレージ

Cronet は HTTPS プロトコルを使用したリクエストをサポートし、推奨していますが、HttpsURLConnection API はサポートしていません。このサポートの欠如には、システムを介して提供される特定の HTTPS 機能を使用しないことも含まれます。

戻り値
URLStreamHandlerFactory

この CronetEngine によって実装された URLStreamHandlerFactory インスタンス。

getActiveRequestCount

public int getActiveRequestCount()

アクティブなリクエストの数を返します。

UrlRequest.start() でリクエストが「アクティブ」になります(このメソッドが例外をスローしない場合)。すべてのコールバックが返され、今後追加のコールバックをトリガーできなくなると、非アクティブになります。実際には、これは onSucceeded/onCanceled/onFailed が返され、すべてのリクエスト完了リスナーが返されると、リクエストが非アクティブになることを意味します。詳細については、Cronet リクエストのライフサイクルをご覧ください。

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

ネットワーク品質推定ツールによって計算されたダウンストリーム スループットの推定値(kbps 単位)を返します。値が使用できない場合は CONNECTION_METRIC_UNKNOWN に設定します。これは enableNetworkQualityEstimator の後に呼び出す必要があり、そうでない場合は例外がスローされます。

戻り値
int

ダウンストリーム スループットの推定値(kb/秒)。

getEffectiveConnectionType

public int getEffectiveConnectionType()

ネットワーク品質推定ツールによって計算された有効な接続タイプの推定値を返します。この値の計算を開始するには、enableNetworkQualityEstimator を呼び出します。

戻り値
int

推定接続タイプ。返される値は EFFECTIVE_CONNECTION_TYPE_* のいずれかです。

getGlobalMetricsDeltas

public abstract byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

ネットワーク品質推定ツールによって計算された HTTP RTT の推定値(ミリ秒単位)を返します。値が使用できない場合は CONNECTION_METRIC_UNKNOWN に設定します。これは enableNetworkQualityEstimator の後に呼び出す必要があり、そうでない場合は例外がスローされます。

戻り値
int

HTTP RTT の推定値(ミリ秒単位)。

getTransportRttMs

public int getTransportRttMs()

ネットワーク品質推定ツールによって計算された転送 RTT の推定値(ミリ秒単位)を返します。値が使用できない場合は CONNECTION_METRIC_UNKNOWN に設定します。これは enableNetworkQualityEstimator の後に呼び出す必要があり、そうでない場合は例外がスローされます。

戻り値
int

トランスポート RTT の推定値(ミリ秒単位)。

getVersionString

public abstract String getVersionString()
戻り値
String

エンジンを人が読める形式のバージョン文字列。

newUrlRequestBuilder

public abstract UrlRequest.Builder newUrlRequestBuilder(
    String url,
    UrlRequest.Callback callback,
    Executor executor
)

UrlRequest のビルダーを作成します。生成された UrlRequest オブジェクトのすべてのコールバックは、executor のスレッドで呼び出されます。executor は、execute を呼び出すスレッドでタスクを実行してはなりません。これにより、ネットワーク オペレーションのブロックやシャットダウン中の例外の発生を防ぎます。

パラメータ
String url

生成されたリクエストの URL。

UrlRequest.Callback callback

さまざまなイベントで呼び出されるコールバック オブジェクト。

Executor executor

Executor。すべてのコールバックが呼び出されます。

openConnection

public abstract URLConnection openConnection(URL url)

URLurl で指定されたリソースへの新しい接続を確立します。

注: Cronet の java.net.HttpURLConnection 実装にはいくつかの制限があります。詳しくは、createURLStreamHandlerFactory をご覧ください。

パラメータ
URL url

接続するリソースの URL。

戻り値
URLConnection

この CronetEngine によって実装された java.net.HttpURLConnection インスタンス。

例外
java.io.IOException

接続を開くときにエラーが発生した場合。

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

完了したリクエスト リスナーを削除します。

パラメータ
RequestFinishedInfo.Listener listener

削除するリスナー。

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

addRttListener で以前に登録された往復時間のリスナーを削除します。これは、モニタリングの受信を停止するために、NetworkQualityRttListener が追加された後に呼び出す必要があります。

パラメータ
NetworkQualityRttListener listener

ラウンドトリップ時間のリスナー。

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

スループットのリスナーを削除します。これは、モニタリングの受信を停止するために、addThroughputListenerNetworkQualityThroughputListener が追加された後に呼び出す必要があります。

パラメータ
NetworkQualityThroughputListener listener

スループットのリスナー。

shutdown

public abstract void shutdown()

アクティブなリクエストがない場合は CronetEngine をシャットダウンし、それ以外の場合は例外をスローします。

ネットワーク スレッドで呼び出すことはできません。Cronet が Executor を呼び出すスレッド(Executor がコールバックを呼び出すスレッドとは異なります)です。すべての CronetEngine リソースがクリーンアップされるまでブロックされることがあります。

startNetLogToDisk

public void startNetLogToDisk(String dirPath, boolean logAll, int maxSize)

指定されたディレクトリに、サイズ制限付きで NetLog のロギングを開始します。NetLog には、すべてのライブ CronetEngine によって出力されたイベントが含まれます。NetLog はデバッグに役立ちます。ロギングが停止すると stopNetLog、データは dirPath の netlog.json に書き込まれます。ロギングが中断された場合は、https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py を使用して、.inprogress サブディレクトリにあるファイルをマニュアルでつなぎ合わせることができます。ログは、Chrome ブラウザで chrome://net-internals/#import に移動して確認できます。

パラメータ
String dirPath

netlog.json ファイルが作成されるディレクトリ。dirPath はすでに存在している必要があります。NetLog ファイルがディレクトリに存在してはなりません。アクティブにロギングしている場合、このメソッドは無視されます。

boolean logAll

true: 基本イベント、ユーザー Cookie、認証情報、転送されたすべてのバイト数をログに含めます。このオプションはユーザーの認証情報を公開するため、プライバシー リスクがあります。ユーザーの同意を得て、ログが公開されない状況でのみ使用してください。false を使用して、基本的なイベントのみを含めます。

int maxSize

NetLog で使用されるディスク容量の合計の最大値(バイト単位)。実際のディスク容量の使用量がこの上限をわずかに超えることがあります。

startNetLogToFile

public abstract void startNetLogToFile(String fileName, boolean logAll)

NetLog のファイルへのロギングを開始します。NetLog には、すべてのライブ CronetEngine によって出力されたイベントが含まれます。NetLog はデバッグに役立ちます。このファイルは、Chrome ブラウザで chrome://net-internals/#import に移動して表示できます。

パラメータ
String fileName

完全なファイルパス。空にすることはできません。ファイルが存在する場合は、開始前に切り捨てられます。アクティブにロギングしている場合、このメソッドは無視されます。

boolean logAll

true: 基本イベント、ユーザー Cookie、認証情報、転送されたすべてのバイト数をログに含めます。このオプションはユーザーの認証情報を公開するため、プライバシー リスクがあります。ユーザーの同意を得て、ログが公開されない状況でのみ使用してください。false を使用して、基本的なイベントのみを含めます。

stopNetLog

public abstract void stopNetLog()

NetLog ロギングを停止し、ファイルをディスクにフラッシュします。ロギング セッションが進行中でない場合、この呼び出しは無視されます。