CronetEngine

public abstract class CronetEngine

Các lớp con trực tiếp đã biết
Các lớp con gián tiếp đã biết
JavaCronetEngine

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


Một công cụ để xử lý UrlRequest, sử dụng ngăn xếp HTTP tốt nhất có trên nền tảng hiện tại. Bạn có thể tạo một phiên bản của lớp này bằng cách sử dụng Builder.

Tóm tắt

Các loại lồng nhau

Trình tạo cho CronetEngine, cho phép định cấu hình CronetEngine trong thời gian chạy.

Một lớp cung cấp phương thức tải thư viện gốc cronet.

Hằng số

static final int

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

static final int

Không xác định được giá trị của một chỉ số kết nối.

static final int

Loại kết nối hiệu quả ước tính là 2G.

static final int

Loại kết nối ước tính có hiệu quả là 3G.

static final int

Loại kết nối ước tính có hiệu quả là 4G.

static final int

Thiết bị không có kết nối mạng.

static final int

Loại kết nối hiệu quả ước tính là 2G chậm.

static final int

Không xác định được thông tin ước tính về loại kết nối hiệu quả.

static final long

Giá trị dùng để huỷ mọi hoạt động liên kết mạng trước đó.

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ử.

abstract 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.

abstract 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.

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

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

abstract URLConnection

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

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.

abstract 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.

abstract void
startNetLogToFile(String fileName, boolean logAll)

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

abstract void

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

Hằng số

ACTIVE_REQUEST_COUNT_UNKNOWN

public static final int ACTIVE_REQUEST_COUNT_UNKNOWN = -1

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

CONNECTION_METRIC_UNKNOWN

public static final int CONNECTION_METRIC_UNKNOWN = -1

Không xác định được giá trị của một chỉ số kết nối.

EFFECTIVE_CONNECTION_TYPE_2G

public static final int EFFECTIVE_CONNECTION_TYPE_2G = 3

Loại kết nối hiệu quả ước tính là 2G.

EFFECTIVE_CONNECTION_TYPE_3G

public static final int EFFECTIVE_CONNECTION_TYPE_3G = 4

Loại kết nối ước tính có hiệu quả là 3G.

EFFECTIVE_CONNECTION_TYPE_4G

public static final int EFFECTIVE_CONNECTION_TYPE_4G = 5

Loại kết nối ước tính có hiệu quả là 4G.

EFFECTIVE_CONNECTION_TYPE_OFFLINE

public static final int EFFECTIVE_CONNECTION_TYPE_OFFLINE = 1

Thiết bị không có kết nối mạng.

EFFECTIVE_CONNECTION_TYPE_SLOW_2G

public static final int EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 2

Loại kết nối hiệu quả ước tính là 2G chậm.

EFFECTIVE_CONNECTION_TYPE_UNKNOWN

public static final int EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0

Không xác định được thông tin ước tính về loại kết nối hiệu quả.

UNBIND_NETWORK_HANDLE

public static final long UNBIND_NETWORK_HANDLE = -1

Giá trị dùng để huỷ mọi hoạt động liên kết mạng trước đó.

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

CronetEngine

public CronetEngine()

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.

createURLStreamHandlerFactory

public abstract 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 abstract 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 abstract 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ụ.

newUrlRequestBuilder

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

Tạo trình tạo cho UrlRequest. Tất cả các lệnh gọi lại cho các đối tượng UrlRequest đã tạo sẽ được gọi trên các luồng của executor. executor không được chạy các nhiệm vụ trên luồng gọi execute để ngăn chặn các thao tác mạng bị chặn và gây ra các ngoại lệ trong quá trình ngừng hoạt động.

Tham số
String url

URL cho các yêu cầu được tạo.

UrlRequest.Callback callback

đối tượng gọi lại được gọi trên các sự kiện khác nhau.

Executor executor

Executor mà tất cả các lệnh gọi lại sẽ được gọi.

openConnection

public abstract 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.

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 abstract 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 abstract 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 abstract 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.