JavaCronetEngine

public final class JavaCronetEngine extends CronetEngineBase


java.net.HttpURLConnection obsługuje CronetEngine.

Nie obsługuje dzienników sieci, pomiaru przesyłanych danych, bidistream, pamięci podręcznej ani priorytetu.

Podsumowanie

Konstruktory publiczne

Metody publiczne

void

Rejestruje odbiorcę, który jest wywoływany po zakończeniu każdej prośby z informacjami o niej.

void

Rejestruje detektor, który jest wywoływany, gdy estymator jakości sieci zarejestruje próbkę czasu podróży w obie strony.

void

Rejestruje odbiorcę, który jest wywoływany za każdym razem, gdy estymator jakości sieci zarejestruje próbkę pomiaru przepustowości.

void
bindToNetwork(long networkHandle)

Wiąże silnik z określonym uchwytem sieciowym.

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

Konfiguruje estymator jakości sieci na potrzeby testowania.

ExperimentalUrlRequest
createRequest(
    String url,
    UrlRequest.Callback callback,
    Executor executor,
    int priority,
    Collection<Object> connectionAnnotations,
    boolean disableCache,
    boolean disableConnectionMigration,
    boolean allowDirectExecutor,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    RequestFinishedInfo.Listener requestFinishedListener,
    int idempotency,
    long networkHandle,
    String method,
    ArrayList<Map.Entry<StringString>> requestHeaders,
    UploadDataProvider uploadDataProvider,
    Executor uploadDataProviderExecutor,
    byte[] sharedDictionaryHash,
    ByteBuffer sharedDictionary,
    @NonNull String sharedDictionaryId
)
URLStreamHandlerFactory

Tworzy URLStreamHandlerFactory do obsługi ruchu HTTP i HTTPS.

int

Zwraca liczbę aktywnych żądań.

int

Zwraca szacunkową przepustowość pobierania (w kilobitach na sekundę) obliczoną przez narzędzie do szacowania jakości sieci.

int

Zwraca szacunkową wartość efektywnego typu połączenia obliczoną przez narzędzie do szacowania jakości sieci.

byte[]

Ta metoda została wycofana.

W nowoczesnych wersjach Croneta ta funkcja zawsze zwraca pustą tablicę.

int

Zwraca szacunkową wartość RTT HTTP (w milisekundach) obliczoną przez narzędzie do szacowania jakości sieci.

int

Zwraca szacunkowy czas RTT transportu (w milisekundach) obliczony przez narzędzie do szacowania jakości sieci.

String
URLConnection

Nawiązuje nowe połączenie z zasobem określonym przez URLurl.

URLConnection
openConnection(URL url, Proxy proxy)

Ustanawia nowe połączenie z zasobem określonym przez URLurl przy użyciu podanego serwera proxy.

void

Usuwa odbiorcę zakończonego żądania.

void

Usuwa odbiorcę czasu podróży w obie strony, jeśli został wcześniej zarejestrowany za pomocą addRttListener.

void

Usuwa detektor przepustowości.

void

Zamyka CronetEngine, jeśli nie ma aktywnych żądań, w przeciwnym razie zgłasza wyjątek.

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

Uruchamia rejestrowanie w NetLog w określonym katalogu o ograniczonej wielkości.

void
startNetLogToFile(String fileName, boolean logAll)

Rozpoczyna rejestrowanie w NetLogu w pliku.

void

Zatrzymuje rejestrowanie w NetLogu i zapisuje plik na dysku.

Metody chronione

ExperimentalBidirectionalStream
createBidirectionalStream(
    String url,
    BidirectionalStream.Callback callback,
    Executor executor,
    String httpMethod,
    List<Map.Entry<StringString>> requestHeaders,
    @CronetEngineBase.StreamPriority int priority,
    boolean delayRequestHeadersUntilFirstFlush,
    Collection<Object> connectionAnnotations,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    long networkHandle
)

Odziedziczone stałe

org.chromium.net.CronetEngine
static final int

Wartość liczby aktywnych żądań jest nieznana

org.chromium.net.impl.CronetEngineBase
static final long

Metody dziedziczone

org.chromium.net.impl.CronetEngineBase
ExperimentalUrlRequest.Builder
newUrlRequestBuilder(
    String url,
    UrlRequest.Callback callback,
    Executor executor
)

Tworzy kreator dla UrlRequest.

Konstruktory publiczne

JavaCronetEngine

public JavaCronetEngine(CronetEngineBuilderImpl builder)

Metody publiczne

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

Rejestruje odbiorcę, który jest wywoływany po zakończeniu każdej prośby z informacjami o niej.

Słuchacz jest wywoływany na java.util.concurrent.Executor podany przez niego.

Parametry
RequestFinishedInfo.Listener listener

odbiornik ukończonych żądań.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

Rejestruje detektor, który jest wywoływany, gdy estymator jakości sieci zarejestruje próbkę czasu podróży w obie strony. Tę funkcję należy wywołać po wywołaniu funkcji enableNetworkQualityEstimator. W przeciwnym razie zostanie zgłoszony wyjątek. Czasy podróży w obie strony mogą być rejestrowane na różnych warstwach stosu sieciowego, w tym w przypadku protokołów TCP i QUIC oraz na warstwie żądania adresu URL. Detektor jest wywoływany na obiekcie java.util.concurrent.Executor, który jest przekazywany do enableNetworkQualityEstimator.

Parametry
NetworkQualityRttListener listener

słuchacz czasów błądzenia.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

Rejestruje odbiorcę, który jest wywoływany za każdym razem, gdy estymator jakości sieci zarejestruje próbkę pomiaru przepustowości. Musi być wywoływana po enableNetworkQualityEstimator. Obserwacje przepustowości są obliczane na podstawie pomiaru bajtów odczytanych przez aktywny interfejs sieciowy w czasie, gdy otrzymywana jest co najmniej 1 odpowiedź URL. Detektor jest wywoływany na obiekcie java.util.concurrent.Executor, który jest przekazywany do enableNetworkQualityEstimator.

Parametry
NetworkQualityThroughputListener listener

odbiorca przepustowości.

bindToNetwork

public void bindToNetwork(long networkHandle)

Wiąże silnik z określonym uchwytem sieciowym. Wszystkie żądania utworzone za pomocą tego silnika będą korzystać z sieci powiązanej z tym uchwytem. Jeśli ta sieć zostanie odłączona, wszystkie żądania zakończą się niepowodzeniem. Dokładny błąd zależy od etapu przetwarzania żądania, na którym nastąpi odłączenie sieci. Uchwyty sieci można uzyskać za pomocą Network#getNetworkHandle. Dostępne tylko na urządzeniach z Androidem Marshmallow.

Parametry
long networkHandle

uchwyt sieci, do której ma być przypisany silnik; Aby usunąć powiązanie, wpisz UNBIND_NETWORK_HANDLE.

configureNetworkQualityEstimatorForTesting

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

Konfiguruje estymator jakości sieci na potrzeby testowania. Tę funkcję należy wywołać przed dodaniem odbiorników czasu podróży w obie strony i przepustowości oraz po włączeniu narzędzia do szacowania jakości sieci.

Parametry
boolean useLocalHostRequests

uwzględniać w szacunkach żądania wysyłane do hosta lokalnego.

boolean useSmallerResponses

uwzględniać małe odpowiedzi w szacunkach przepustowości;

boolean disableOfflineCheck

Gdy ma wartość Prawda, wyłącza sprawdzanie stanu offline urządzenia podczas obliczania efektywnego typu połączenia lub zapisywania ustawień.

createRequest

public ExperimentalUrlRequest createRequest(
    String url,
    UrlRequest.Callback callback,
    Executor executor,
    int priority,
    Collection<Object> connectionAnnotations,
    boolean disableCache,
    boolean disableConnectionMigration,
    boolean allowDirectExecutor,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    RequestFinishedInfo.Listener requestFinishedListener,
    int idempotency,
    long networkHandle,
    String method,
    ArrayList<Map.Entry<StringString>> requestHeaders,
    UploadDataProvider uploadDataProvider,
    Executor uploadDataProviderExecutor,
    byte[] sharedDictionaryHash,
    ByteBuffer sharedDictionary,
    @NonNull String sharedDictionaryId
)

createURLStreamHandlerFactory

public URLStreamHandlerFactory createURLStreamHandlerFactory()

Tworzy URLStreamHandlerFactory do obsługi ruchu HTTP i HTTPS. Instancję tej klasy można zainstalować za pomocą setURLStreamHandlerFactory, dzięki czemu ten obiekt CronetEngine będzie domyślnie używany w przypadku wszystkich żądań utworzonych za pomocą openConnection.

Cronet nie korzysta z niektórych funkcji HTTP udostępnianych przez system:

Cronet obsługuje i zaleca żądania korzystające z protokołu HTTPS, ale nie obsługuje interfejsu HttpsURLConnection API. Brak obsługi obejmuje też nieużywanie niektórych funkcji HTTPS udostępnianych przez system:

Zwraca
URLStreamHandlerFactory

instancja URLStreamHandlerFactory zaimplementowana przez ten obiekt CronetEngine.

getActiveRequestCount

public int getActiveRequestCount()

Zwraca liczbę aktywnych żądań.

Żądanie staje się „aktywne” w metodzie UrlRequest.start(), pod warunkiem że nie zgłasza ona wyjątku. Staje się nieaktywny, gdy wszystkie wywołania zwrotne zostaną zwrócone i w przyszłości nie będzie można wywołać żadnych dodatkowych wywołań zwrotnych. W praktyce oznacza to, że żądanie jest nieaktywne po zwróceniu wartości przez funkcje onSucceeded, onCanceled lub onFailed oraz po zwróceniu wartości przez wszystkich słuchaczy zakończenia żądania. Więcej informacji znajdziesz w sekcji Cykl życia żądań Cronet.

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

Zwraca szacunkową przepustowość pobierania (w kilobitach na sekundę) obliczoną przez narzędzie do szacowania jakości sieci. Jeśli wartość jest niedostępna, ustaw ją na CONNECTION_METRIC_UNKNOWN. Tę metodę należy wywołać po wywołaniu metody enableNetworkQualityEstimator. W przeciwnym razie zostanie zgłoszony wyjątek.

Zwraca
int

Szacunkowa przepustowość pobierania w kilobitach na sekundę.

getEffectiveConnectionType

public int getEffectiveConnectionType()

Zwraca szacunkową wartość efektywnego typu połączenia obliczoną przez narzędzie do szacowania jakości sieci. Zadzwoń pod numer enableNetworkQualityEstimator, aby rozpocząć obliczanie tej wartości.

Zwraca
int

szacowany typ połączenia. Zwracana wartość to jedna z tych wartości: EFFECTIVE_CONNECTION_TYPE_* .

getGlobalMetricsDeltas

public byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

Zwraca szacunkową wartość RTT HTTP (w milisekundach) obliczoną przez narzędzie do szacowania jakości sieci. Jeśli wartość jest niedostępna, ustaw ją na CONNECTION_METRIC_UNKNOWN. Tę metodę należy wywołać po wywołaniu metody enableNetworkQualityEstimator. W przeciwnym razie zostanie zgłoszony wyjątek.

Zwraca
int

Szacunkowy czas RTT protokołu HTTP w milisekundach.

getTransportRttMs

public int getTransportRttMs()

Zwraca szacunkowy czas RTT transportu (w milisekundach) obliczony przez narzędzie do szacowania jakości sieci. Jeśli wartość jest niedostępna, ustaw ją na CONNECTION_METRIC_UNKNOWN. Tę metodę należy wywołać po wywołaniu metody enableNetworkQualityEstimator. W przeciwnym razie zostanie zgłoszony wyjątek.

Zwraca
int

Szacowany czas RTT transportu w milisekundach.

getVersionString

public String getVersionString()
Zwraca
String

zrozumiały dla człowieka ciąg tekstowy z wersją silnika.

openConnection

public URLConnection openConnection(URL url)

Nawiązuje nowe połączenie z zasobem określonym przez URLurl.

Uwaga: implementacja Croneta java.net.HttpURLConnection podlega pewnym ograniczeniom. Szczegóły znajdziesz w sekcji createURLStreamHandlerFactory.

Parametry
URL url

Adres URL zasobu, z którym zostanie nawiązane połączenie.

Zwraca
URLConnection

instancja java.net.HttpURLConnection zaimplementowana przez ten obiekt CronetEngine.

Zgłasza
java.io.IOException

jeśli podczas otwierania połączenia wystąpi błąd.

openConnection

public URLConnection openConnection(URL url, Proxy proxy)

Ustanawia nowe połączenie z zasobem określonym przez URLurl przy użyciu podanego serwera proxy.

Uwaga: implementacja Croneta java.net.HttpURLConnection podlega pewnym ograniczeniom. Szczegóły znajdziesz w sekcji createURLStreamHandlerFactory.

Parametry
URL url

Adres URL zasobu, z którym zostanie nawiązane połączenie.

Proxy proxy

serwer proxy, który ma być używany podczas nawiązywania połączenia.

Zwraca
URLConnection

instancja java.net.HttpURLConnection zaimplementowana przez ten obiekt CronetEngine.

Zgłasza
java.io.IOException

jeśli podczas otwierania połączenia wystąpi błąd.

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

Usuwa odbiorcę zakończonego żądania.

Parametry
RequestFinishedInfo.Listener listener

słuchacza do usunięcia.

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

Usuwa odbiorcę czasu podróży w obie strony, jeśli został wcześniej zarejestrowany za pomocą addRttListener. Tę funkcję należy wywołać po dodaniu NetworkQualityRttListener, aby przestać otrzymywać obserwacje.

Parametry
NetworkQualityRttListener listener

słuchacz czasów błądzenia.

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

Usuwa detektor przepustowości. Tę metodę należy wywołać po dodaniu NetworkQualityThroughputListener za pomocą metody addThroughputListener, aby przestać otrzymywać obserwacje.

Parametry
NetworkQualityThroughputListener listener

odbiorca przepustowości.

wyłączenie,

public void shutdown()

Zamyka CronetEngine, jeśli nie ma aktywnych żądań, w przeciwnym razie zgłasza wyjątek.

Nie można wywoływać w wątku sieciowym – wątku, w którym Cronet wywołuje Executor (który różni się od wątku, w którym Executor wywołuje wywołania zwrotne). Może blokować do czasu wyczyszczenia wszystkich zasobów CronetEngine.

startNetLogToDisk

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

Uruchamia rejestrowanie w NetLog w określonym katalogu o ograniczonej wielkości. NetLog będzie zawierać zdarzenia emitowane przez wszystkie aktywne obiekty CronetEngine. NetLog jest przydatny do debugowania. Po zatrzymaniu rejestrowania stopNetLog dane zostaną zapisane w pliku netlog.json w folderze dirPath. Jeśli rejestrowanie zostanie przerwane, możesz ręcznie połączyć pliki znajdujące się w podkatalogu .inprogress, korzystając z tego narzędzia: https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py. Dziennik można wyświetlić w przeglądarce Chrome, otwierając stronę chrome://net-internals/#import.

Parametry
String dirPath

katalog, w którym zostanie utworzony plik netlog.json. Ścieżka dirPath musi już istnieć. W katalogu nie mogą znajdować się pliki NetLog. Jeśli aktywnie rejestrujesz dane, ta metoda jest ignorowana.

boolean logAll

true, aby uwzględnić w dzienniku podstawowe zdarzenia, pliki cookie użytkownika, dane logowania i wszystkie przeniesione bajty. Ta opcja stwarza ryzyko naruszenia prywatności, ponieważ ujawnia dane logowania użytkownika. Należy jej używać tylko za zgodą użytkownika i w sytuacjach, w których dziennik nie będzie publiczny. false, aby uwzględniać tylko podstawowe zdarzenia.

int maxSize

maksymalna łączna ilość miejsca na dysku (w bajtach), która powinna być używana przez NetLog. Rzeczywiste wykorzystanie miejsca na dysku może nieznacznie przekraczać ten limit.

startNetLogToFile

public void startNetLogToFile(String fileName, boolean logAll)

Rozpoczyna rejestrowanie w NetLogu w pliku. NetLog będzie zawierać zdarzenia emitowane przez wszystkie aktywne obiekty CronetEngine. NetLog jest przydatny do debugowania. Plik można wyświetlić w przeglądarce Chrome, otwierając stronę chrome://net-internals/#import.

Parametry
String fileName

pełną ścieżkę do pliku; Nie może być puste. Jeśli plik istnieje, przed rozpoczęciem jest obcinany. Jeśli aktywnie rejestrujesz dane, ta metoda jest ignorowana.

boolean logAll

true, aby uwzględnić w dzienniku podstawowe zdarzenia, pliki cookie użytkownika, dane logowania i wszystkie przeniesione bajty. Ta opcja stwarza ryzyko naruszenia prywatności, ponieważ ujawnia dane logowania użytkownika. Należy jej używać tylko za zgodą użytkownika i w sytuacjach, w których dziennik nie będzie publiczny. false, aby uwzględniać tylko podstawowe zdarzenia.

stopNetLog

public void stopNetLog()

Zatrzymuje rejestrowanie w NetLogu i zapisuje plik na dysku. Jeśli sesja rejestrowania nie jest w toku, to wywołanie jest ignorowane.

Metody chronione

createBidirectionalStream

protected ExperimentalBidirectionalStream createBidirectionalStream(
    String url,
    BidirectionalStream.Callback callback,
    Executor executor,
    String httpMethod,
    List<Map.Entry<StringString>> requestHeaders,
    @CronetEngineBase.StreamPriority int priority,
    boolean delayRequestHeadersUntilFirstFlush,
    Collection<Object> connectionAnnotations,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    long networkHandle
)