JavaCronetEngine

public final class JavaCronetEngine extends CronetEngineBase


java.net.HttpURLConnection CronetEngine được sao lưu.

Không hỗ trợ netlog, đo lường dữ liệu được chuyển, bidistream, bộ nhớ đệm hoặc mức độ ưu tiên.

Tóm tắt

Hàm khởi tạo công khai

Phương thức công khai

void

Đăng ký một trình nghe được gọi sau khi kết thúc mỗi yêu cầu cùng với thông tin yêu cầu.

void

Đăng ký một trình nghe được gọi bất cứ khi nào công cụ ước tính chất lượng mạng ghi nhận được thời gian khứ hồi mẫu.

void

Đăng ký một trình nghe được gọi bất cứ khi nào công cụ ước tính chất lượng mạng ghi nhận một phép đo thông lượng mẫu.

void
bindToNetwork(long networkHandle)

Liên kết công cụ với tay cầm mạng được chỉ định.

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

Định cấu hình trình ước tính chất lượng mạng để kiểm thử.

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

Tạo một URLStreamHandlerFactory để xử lý lưu lượng truy cập HTTP và HTTPS.

int

Trả về số lượng yêu cầu đang hoạt động.

int

Trả về ước tính về thông lượng truyền xuôi (tính bằng kilobit trên giây) do trình ước tính chất lượng mạng tính toán.

int

Trả về giá trị ước tính về loại kết nối hiệu quả do trình ước tính chất lượng mạng tính toán.

byte[]

Phương thức này không được dùng nữa.

Trong các phiên bản Cronet hiện đại, phương thức này sẽ luôn trả về một mảng trống.

int

Trả về giá trị ước tính RTT HTTP (tính bằng mili giây) do công cụ ước tính chất lượng mạng tính toán.

int

Trả về ước tính RTT của hoạt động truyền tải (tính bằng mili giây) do công cụ ước tính chất lượng mạng tính toán.

String
URLConnection

Thiết lập một kết nối mới đến tài nguyên do URLurl chỉ định.

URLConnection
openConnection(URL url, Proxy proxy)

Thiết lập một kết nối mới đến tài nguyên do URLurl chỉ định bằng cách sử dụng proxy đã cho.

void

Xoá một trình nghe yêu cầu đã hoàn tất.

void

Xoá một trình nghe thời gian khứ hồi nếu trước đó đã đăng ký bằng addRttListener.

void

Xoá một trình nghe thông lượng.

void

Tắt CronetEngine nếu không có yêu cầu nào đang hoạt động, nếu không thì sẽ gửi một ngoại lệ.

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

Bắt đầu ghi nhật ký NetLog vào một thư mục được chỉ định với kích thước giới hạn.

void
startNetLogToFile(String fileName, boolean logAll)

Bắt đầu ghi nhật ký NetLog vào một tệp.

void

Dừng ghi nhật ký NetLog và xoá tệp vào ổ đĩa.

Phương thức được bảo vệ

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
)

Hằng số kế thừa

Từ org.chromium.net.CronetEngine
static final int

Không xác định được giá trị của số lượng yêu cầu đang hoạt động

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

Các phương thức kế thừa

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

Tạo trình tạo cho UrlRequest.

Hàm khởi tạo công khai

JavaCronetEngine

public JavaCronetEngine(CronetEngineBuilderImpl builder)

Phương thức công khai

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

Đăng ký một trình nghe được gọi sau khi kết thúc mỗi yêu cầu cùng với thông tin yêu cầu.

Trình nghe này được gọi trên một java.util.concurrent.Executor do trình nghe cung cấp.

Tham số
RequestFinishedInfo.Listener listener

trình nghe cho các yêu cầu đã hoàn tất.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

Đăng ký một trình nghe được gọi bất cứ khi nào công cụ ước tính chất lượng mạng ghi nhận được thời gian khứ hồi mẫu. Bạn phải gọi phương thức này sau enableNetworkQualityEstimator, nếu không phương thức này sẽ khai báo một ngoại lệ. Thời gian khứ hồi có thể được ghi lại ở nhiều lớp của ngăn xếp mạng, bao gồm TCP, QUIC và ở lớp yêu cầu URL. Trình nghe được gọi trên java.util.concurrent.Executor được truyền đến enableNetworkQualityEstimator.

Tham số
NetworkQualityRttListener listener

trình nghe thời gian khứ hồi.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

Đăng ký một trình nghe được gọi bất cứ khi nào công cụ ước tính chất lượng mạng ghi nhận một phép đo thông lượng mẫu. Bạn phải gọi phương thức này sau enableNetworkQualityEstimator. Thông tin quan sát về tốc độ truyền dữ liệu được tính bằng cách đo số byte được đọc qua giao diện mạng đang hoạt động tại thời điểm nhận được ít nhất một phản hồi URL. Trình nghe được gọi trên java.util.concurrent.Executor được truyền đến enableNetworkQualityEstimator.

Tham số
NetworkQualityThroughputListener listener

trình nghe thông lượng.

bindToNetwork

public void bindToNetwork(long networkHandle)

Liên kết công cụ với tay cầm mạng được chỉ định. Tất cả các yêu cầu được tạo thông qua công cụ này sẽ sử dụng mạng được liên kết với mã nhận dạng này. Nếu mạng này ngắt kết nối, tất cả các yêu cầu sẽ không thành công. Lỗi chính xác sẽ phụ thuộc vào giai đoạn xử lý yêu cầu khi mạng ngắt kết nối. Bạn có thể lấy các mã nhận dạng mạng thông qua Network#getNetworkHandle. Chỉ có từ Android Marshmallow trở lên.

Tham số
long networkHandle

xử lý mạng để liên kết công cụ. Chỉ định UNBIND_NETWORK_HANDLE để huỷ liên kết.

configureNetworkQualityEstimatorForTesting

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

Định cấu hình trình ước tính chất lượng mạng để kiểm thử. Bạn phải gọi phương thức này trước khi thêm trình nghe thời gian khứ hồi và thông lượng, đồng thời sau khi bật trình ước tính chất lượng mạng.

Tham số
boolean useLocalHostRequests

bao gồm các yêu cầu đến localhost trong thông tin ước tính.

boolean useSmallerResponses

bao gồm các phản hồi nhỏ trong ước tính thông lượng.

boolean disableOfflineCheck

khi được đặt thành true, sẽ vô hiệu hoá các lần kiểm tra thiết bị khi không có mạng khi tính toán loại kết nối hiệu quả hoặc khi ghi các lựa chọn ưu tiên.

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()

Tạo một URLStreamHandlerFactory để xử lý lưu lượng truy cập HTTP và HTTPS. Bạn có thể cài đặt một phiên bản của lớp này thông qua setURLStreamHandlerFactory, do đó, theo mặc định, bạn có thể sử dụng CronetEngine này cho tất cả các yêu cầu được tạo thông qua openConnection.

Cronet không sử dụng một số tính năng HTTP do hệ thống cung cấp:

Mặc dù Cronet hỗ trợ và khuyến khích các yêu cầu sử dụng giao thức HTTPS, nhưng Cronet không hỗ trợ API HttpsURLConnection. Việc thiếu hỗ trợ này cũng bao gồm việc không sử dụng một số tính năng HTTPS do hệ thống cung cấp:

Giá trị trả về
URLStreamHandlerFactory

một thực thể URLStreamHandlerFactory do CronetEngine này triển khai.

getActiveRequestCount

public int getActiveRequestCount()

Trả về số lượng yêu cầu đang hoạt động.

Một yêu cầu sẽ chuyển sang trạng thái "đang hoạt động" trong UrlRequest.start(), giả sử phương thức đó không gây ra một ngoại lệ. Thao tác này sẽ không hoạt động khi tất cả các lệnh gọi lại đã trả về và không có lệnh gọi lại bổ sung nào có thể được kích hoạt trong tương lai. Trên thực tế, điều đó có nghĩa là yêu cầu sẽ không hoạt động sau khi onSucceeded/onCanceled/onFailed trả về và tất cả trình nghe yêu cầu đã hoàn tất đều đã trả về. Vòng đời của các yêu cầu Cronet để biết thêm thông tin.

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

Trả về ước tính về thông lượng truyền xuôi (tính bằng kilobit trên giây) do trình ước tính chất lượng mạng tính toán. Đặt thành CONNECTION_METRIC_UNKNOWN nếu không có giá trị. Bạn phải gọi phương thức này sau enableNetworkQualityEstimator, nếu không phương thức này sẽ khai báo một ngoại lệ.

Giá trị trả về
int

Ước tính thông lượng truyền xuôi tính bằng kilobit/giây.

getEffectiveConnectionType

public int getEffectiveConnectionType()

Trả về giá trị ước tính về loại kết nối hiệu quả do trình ước tính chất lượng mạng tính toán. Gọi enableNetworkQualityEstimator để bắt đầu tính giá trị này.

Giá trị trả về
int

loại kết nối ước tính. Giá trị trả về là một trong các giá trị EFFECTIVE_CONNECTION_TYPE_* .

getGlobalMetricsDeltas

public byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

Trả về giá trị ước tính RTT HTTP (tính bằng mili giây) do công cụ ước tính chất lượng mạng tính toán. Đặt thành CONNECTION_METRIC_UNKNOWN nếu không có giá trị. Bạn phải gọi phương thức này sau enableNetworkQualityEstimator, nếu không phương thức này sẽ khai báo một ngoại lệ.

Giá trị trả về
int

Ước tính RTT HTTP tính bằng mili giây.

getTransportRttMs

public int getTransportRttMs()

Trả về ước tính RTT của hoạt động truyền tải (tính bằng mili giây) do công cụ ước tính chất lượng mạng tính toán. Đặt thành CONNECTION_METRIC_UNKNOWN nếu không có giá trị. Bạn phải gọi phương thức này sau enableNetworkQualityEstimator, nếu không phương thức này sẽ khai báo một ngoại lệ.

Giá trị trả về
int

Ước tính RTT truyền tải tính bằng mili giây.

getVersionString

public String getVersionString()
Giá trị trả về
String

chuỗi phiên bản mà con người có thể đọc được của công cụ.

openConnection

public URLConnection openConnection(URL url)

Thiết lập một kết nối mới đến tài nguyên do URLurl chỉ định.

Lưu ý: Việc triển khai java.net.HttpURLConnection của Cronet phải tuân thủ một số hạn chế nhất định, hãy xem createURLStreamHandlerFactory để biết thông tin chi tiết.

Tham số
URL url

URL của tài nguyên cần kết nối.

Giá trị trả về
URLConnection

một thực thể java.net.HttpURLConnection do CronetEngine này triển khai.

Gửi
java.io.IOException

nếu xảy ra lỗi trong khi mở kết nối.

openConnection

public URLConnection openConnection(URL url, Proxy proxy)

Thiết lập một kết nối mới đến tài nguyên do URLurl chỉ định bằng cách sử dụng proxy đã cho.

Lưu ý: Việc triển khai java.net.HttpURLConnection của Cronet phải tuân thủ một số hạn chế nhất định, hãy xem createURLStreamHandlerFactory để biết thông tin chi tiết.

Tham số
URL url

URL của tài nguyên cần kết nối.

Proxy proxy

proxy để sử dụng khi thiết lập kết nối.

Giá trị trả về
URLConnection

một thực thể java.net.HttpURLConnection do CronetEngine này triển khai.

Gửi
java.io.IOException

nếu xảy ra lỗi trong khi mở kết nối.

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

Xoá một trình nghe yêu cầu đã hoàn tất.

Tham số
RequestFinishedInfo.Listener listener

trình nghe cần xoá.

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

Xoá một trình nghe thời gian khứ hồi nếu trước đó đã đăng ký bằng addRttListener. Bạn nên gọi phương thức này sau khi thêm một NetworkQualityRttListener để ngừng nhận dữ liệu quan sát.

Tham số
NetworkQualityRttListener listener

trình nghe thời gian khứ hồi.

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

Xoá một trình nghe thông lượng. Bạn nên gọi phương thức này sau khi thêm NetworkQualityThroughputListener bằng addThroughputListener để ngừng nhận dữ liệu quan sát.

Tham số
NetworkQualityThroughputListener listener

trình nghe thông lượng.

tắt

public void shutdown()

Tắt CronetEngine nếu không có yêu cầu nào đang hoạt động, nếu không thì sẽ gửi một ngoại lệ.

Không thể gọi trên luồng mạng – luồng mà Cronet gọi vào Executor (khác với luồng mà Executor gọi các lệnh gọi lại). Có thể chặn cho đến khi tất cả các tài nguyên của CronetEngine được dọn dẹp.

startNetLogToDisk

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

Bắt đầu ghi nhật ký NetLog vào một thư mục được chỉ định với kích thước giới hạn. NetLog sẽ chứa các sự kiện do tất cả CronetEngine đang hoạt động phát ra. NetLog rất hữu ích khi gỡ lỗi. Sau khi quá trình ghi nhật ký dừng stopNetLog, dữ liệu sẽ được ghi vào netlog.json trong dirPath. Nếu quá trình ghi nhật ký bị gián đoạn, bạn có thể ghép các tệp có trong thư mục con .inprogress theo cách thủ công bằng cách sử dụng: https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py. Bạn có thể xem nhật ký bằng trình duyệt Chrome khi truy cập vào chrome://net-internals/#import.

Tham số
String dirPath

thư mục nơi tệp netlog.json sẽ được tạo. dirPath phải đã tồn tại. Các tệp NetLog không được tồn tại trong thư mục. Nếu đang ghi nhật ký, phương thức này sẽ bị bỏ qua.

boolean logAll

true để đưa các sự kiện cơ bản, cookie người dùng, thông tin đăng nhập và tất cả các byte được chuyển vào nhật ký. Lựa chọn này có nguy cơ xâm phạm quyền riêng tư vì để lộ thông tin đăng nhập của người dùng. Bạn chỉ nên sử dụng lựa chọn này khi có sự đồng ý của người dùng và trong những trường hợp nhật ký không được công khai. false để chỉ bao gồm các sự kiện cơ bản.

int maxSize

tổng dung lượng ổ đĩa tối đa tính bằng byte mà NetLog nên sử dụng. Mức sử dụng dung lượng ổ đĩa thực tế có thể vượt quá giới hạn này một chút.

startNetLogToFile

public void startNetLogToFile(String fileName, boolean logAll)

Bắt đầu ghi nhật ký NetLog vào một tệp. NetLog sẽ chứa các sự kiện do tất cả CronetEngine đang hoạt động phát ra. NetLog rất hữu ích khi gỡ lỗi. Bạn có thể xem tệp này bằng trình duyệt Chrome khi truy cập vào chrome://net-internals/#import

Tham số
String fileName

đường dẫn đầy đủ đến tệp. Không được để trống. Nếu tệp tồn tại, tệp đó sẽ bị cắt ngắn trước khi bắt đầu. Nếu đang ghi nhật ký, phương thức này sẽ bị bỏ qua.

boolean logAll

true để đưa các sự kiện cơ bản, cookie người dùng, thông tin đăng nhập và tất cả các byte được chuyển vào nhật ký. Lựa chọn này có nguy cơ xâm phạm quyền riêng tư vì để lộ thông tin đăng nhập của người dùng. Bạn chỉ nên sử dụng lựa chọn này khi có sự đồng ý của người dùng và trong những trường hợp nhật ký không được công khai. false để chỉ bao gồm các sự kiện cơ bản.

stopNetLog

public void stopNetLog()

Dừng ghi nhật ký NetLog và xoá tệp vào ổ đĩa. Nếu phiên ghi nhật ký chưa bắt đầu, lệnh gọi này sẽ bị bỏ qua.

Phương thức được bảo vệ

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
)