JavaCronetEngine

public final class JavaCronetEngine extends CronetEngineBase


java.net.HttpURLConnection ที่ขับเคลื่อนโดย CronetEngine

ไม่รองรับ netlog, การวัดข้อมูลที่โอน, bidistream, แคช หรือลำดับความสำคัญ

สรุป

เครื่องมือสร้างสาธารณะ

เมธอดสาธารณะ

void

ลงทะเบียน Listener ที่จะเรียกใช้หลังจากสิ้นสุดคำขอแต่ละรายการพร้อมข้อมูลคำขอ

void

ลงทะเบียน Listener ที่จะได้รับการเรียกใช้เมื่อใดก็ตามที่เครื่องมือประมาณคุณภาพเครือข่ายพบเวลาในการรับส่งที่วัดได้

void

ลงทะเบียน Listener ที่จะได้รับการเรียกใช้เมื่อใดก็ตามที่เครื่องมือประมาณคุณภาพเครือข่ายพบการวัดอัตราการส่งข้อมูลตัวอย่าง

void
bindToNetwork(long networkHandle)

เชื่อมโยงเครื่องมือกับแฮนเดิลเครือข่ายที่ระบุ

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

กำหนดค่าตัวประมาณคุณภาพเครือข่ายสำหรับการทดสอบ

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

สร้าง URLStreamHandlerFactory เพื่อจัดการการรับส่งข้อมูล HTTP และ HTTPS

int

แสดงผลจำนวนคำขอที่ใช้งานอยู่

int

แสดงผลการประมาณอัตราการส่งข้อมูลดาวน์สตรีม (เป็นกิโลบิตต่อวินาที) ที่คำนวณโดยเครื่องมือประมาณคุณภาพเครือข่าย

int

แสดงค่าประมาณของประเภทการเชื่อมต่อที่มีประสิทธิภาพซึ่งคำนวณโดยเครื่องมือประมาณคุณภาพเครือข่าย

byte[]

เลิกใช้เมธอดนี้แล้ว

ใน Cronet เวอร์ชันใหม่ การดำเนินการนี้จะแสดงผลเป็นอาร์เรย์ว่างเปล่าเสมอ

int

แสดงผลค่าประมาณ RTT ของ HTTP (เป็นมิลลิวินาที) ที่คำนวณโดยเครื่องมือประมาณคุณภาพเครือข่าย

int

แสดงผลค่าประมาณ RTT ของการรับส่ง (เป็นมิลลิวินาที) ที่คำนวณโดยตัวประมาณคุณภาพเครือข่าย

String
URLConnection

สร้างการเชื่อมต่อใหม่กับทรัพยากรที่ระบุโดย URLurl

URLConnection
openConnection(URL url, Proxy proxy)

สร้างการเชื่อมต่อใหม่กับทรัพยากรที่ระบุโดย URLurl โดยใช้พร็อกซีที่ระบุ

void

นำเครื่องมือฟังคำขอที่เสร็จสมบูรณ์ออก

void

นำ Listener ของเวลาในการรับส่งออกหากลงทะเบียนไว้ก่อนหน้านี้ด้วย addRttListener

void

นำ Listener ของปริมาณงานออก

void

ปิด CronetEngine หากไม่มีคำขอที่ใช้งานอยู่ ไม่เช่นนั้นจะเกิดข้อยกเว้น

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

เริ่มการบันทึก NetLog ไปยังไดเรกทอรีที่ระบุโดยมีขนาดที่จำกัด

void
startNetLogToFile(String fileName, boolean logAll)

เริ่มการบันทึก NetLog ไปยังไฟล์

void

หยุดการบันทึก NetLog และล้างข้อมูลไฟล์ลงในดิสก์

วิธีการที่ได้รับการปกป้อง

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
)

ค่าคงที่ที่รับค่ามา

จาก org.chromium.net.CronetEngine
static final int

ไม่ทราบค่าของจำนวนคำขอที่ใช้งานอยู่

จาก org.chromium.net.impl.CronetEngineBase
static final long

วิธีการที่รับช่วง

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

สร้างเครื่องมือสร้างสำหรับ UrlRequest

เครื่องมือสร้างสาธารณะ

JavaCronetEngine

public JavaCronetEngine(CronetEngineBuilderImpl builder)

เมธอดสาธารณะ

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

ลงทะเบียน Listener ที่จะเรียกใช้หลังจากสิ้นสุดคำขอแต่ละรายการพร้อมข้อมูลคำขอ

ระบบจะเรียกใช้ Listener ใน java.util.concurrent.Executor ที่ Listener ระบุ

พารามิเตอร์
RequestFinishedInfo.Listener listener

เครื่องรับฟังสำหรับคำขอที่เสร็จสมบูรณ์

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

ลงทะเบียน Listener ที่จะได้รับการเรียกใช้เมื่อใดก็ตามที่เครื่องมือประมาณคุณภาพเครือข่ายพบเวลาในการรับส่งที่วัดได้ ต้องเรียกใช้หลังจาก enableNetworkQualityEstimator และจะส่งข้อยกเว้นหากไม่เรียกใช้ ระบบอาจบันทึกเวลาในการรับส่งข้อมูลที่เลเยอร์ต่างๆ ของสแต็กเครือข่าย ซึ่งรวมถึง TCP, QUIC และที่เลเยอร์คำขอ URL ระบบจะเรียกใช้ Listener ใน java.util.concurrent.Executor ที่ส่งไปยัง enableNetworkQualityEstimator

พารามิเตอร์
NetworkQualityRttListener listener

เครื่องมือฟังเวลาในการรับส่งข้อมูล

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

ลงทะเบียน Listener ที่จะได้รับการเรียกใช้เมื่อใดก็ตามที่เครื่องมือประมาณคุณภาพเครือข่ายพบการวัดอัตราการส่งข้อมูลตัวอย่าง ต้องเรียกใช้หลังจาก enableNetworkQualityEstimator การสังเกตปริมาณงานจะคำนวณโดยการวัดไบต์ที่อ่านผ่านอินเทอร์เฟซเครือข่ายที่ใช้งานอยู่ ในช่วงเวลาที่ได้รับคำตอบจาก URL อย่างน้อย 1 รายการ ระบบจะเรียกใช้ Listener ใน java.util.concurrent.Executor ที่ส่งไปยัง enableNetworkQualityEstimator

พารามิเตอร์
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
)

กำหนดค่าตัวประมาณคุณภาพเครือข่ายสำหรับการทดสอบ ต้องเรียกใช้ฟังก์ชันนี้ก่อนที่จะเพิ่ม Listener เวลาในการรับส่งและอัตราการส่งข้อมูล และหลังจากที่เปิดใช้ Estimator คุณภาพเครือข่ายแล้ว

พารามิเตอร์
boolean useLocalHostRequests

รวมคำขอไปยัง localhost ในการประมาณ

boolean useSmallerResponses

รวมการตอบกลับขนาดเล็กในการประมาณปริมาณงาน

boolean disableOfflineCheck

เมื่อตั้งค่าเป็น "จริง" จะปิดใช้การตรวจสอบอุปกรณ์ที่ออฟไลน์เมื่อคำนวณประเภทการเชื่อมต่อที่มีประสิทธิภาพหรือเมื่อเขียนค่ากำหนด

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

สร้าง URLStreamHandlerFactory เพื่อจัดการการรับส่งข้อมูล HTTP และ HTTPS คุณติดตั้งอินสแตนซ์ของคลาสนี้ผ่าน setURLStreamHandlerFactory ได้ ดังนั้นจึงใช้ CronetEngine นี้โดยค่าเริ่มต้นสำหรับคำขอทั้งหมดที่สร้างผ่าน openConnection

Cronet ไม่ใช้ฟีเจอร์ HTTP บางอย่างที่ระบบมีให้ ดังนี้

  • แคช HTTP ที่ติดตั้งผ่าน HttpResponseCache.install()
  • วิธีการตรวจสอบสิทธิ์ HTTP ที่ติดตั้งผ่าน setDefault
  • ที่เก็บคุกกี้ HTTP ที่ติดตั้งผ่าน setDefault

แม้ว่า Cronet จะรองรับและแนะนำให้ใช้คำขอที่ใช้โปรโตคอล HTTPS แต่ Cronet ไม่รองรับ API ของ HttpsURLConnection การไม่รองรับนี้ยังรวมถึงการไม่ใช้ฟีเจอร์ HTTPS บางอย่างที่ระบบมีให้ด้วย

การคืนสินค้า
URLStreamHandlerFactory

อินสแตนซ์ URLStreamHandlerFactory ที่ติดตั้งใช้งานโดย CronetEngine นี้

getActiveRequestCount

public int getActiveRequestCount()

แสดงผลจำนวนคำขอที่ใช้งานอยู่

คำขอจะ "ใช้งานอยู่" ใน UrlRequest.start() โดยสมมติว่าเมธอดนั้นไม่ได้ส่งข้อยกเว้น โดยจะไม่มีการใช้งานเมื่อการเรียกกลับทั้งหมดเสร็จสิ้นแล้ว และจะเรียกกลับเพิ่มเติมในอนาคตไม่ได้ ในทางปฏิบัติ นั่นหมายความว่าคำขอจะไม่ได้ใช้งานเมื่อ onSucceeded/onCanceled/onFailed ส่งคืนแล้ว และผู้ฟังที่เสร็จสิ้นคำขอทั้งหมดส่งคืนแล้ว วงจรของคำขอ Cronet เพื่อดูข้อมูลเพิ่มเติม

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

แสดงผลการประมาณอัตราการส่งข้อมูลดาวน์สตรีม (เป็นกิโลบิตต่อวินาที) ที่คำนวณโดยเครื่องมือประมาณคุณภาพเครือข่าย ตั้งค่าเป็น CONNECTION_METRIC_UNKNOWN หากค่าไม่พร้อมใช้งาน ต้องเรียกใช้หลังจาก enableNetworkQualityEstimator และจะส่งข้อยกเว้นหากไม่เรียกใช้

การคืนสินค้า
int

การประมาณปริมาณงานดาวน์สตรีมเป็นกิโลบิตต่อวินาที

getEffectiveConnectionType

public int getEffectiveConnectionType()

แสดงค่าประมาณของประเภทการเชื่อมต่อที่มีประสิทธิภาพซึ่งคำนวณโดยเครื่องมือประมาณคุณภาพเครือข่าย โทรหา enableNetworkQualityEstimator เพื่อเริ่มคำนวณค่านี้

การคืนสินค้า
int

ประเภทการเชื่อมต่อโดยประมาณ ค่าที่แสดงผลจะเป็นค่าใดค่าหนึ่งของ EFFECTIVE_CONNECTION_TYPE_*

getGlobalMetricsDeltas

public byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

แสดงผลค่าประมาณ RTT ของ HTTP (เป็นมิลลิวินาที) ที่คำนวณโดยเครื่องมือประมาณคุณภาพเครือข่าย ตั้งค่าเป็น CONNECTION_METRIC_UNKNOWN หากค่าไม่พร้อมใช้งาน ต้องเรียกใช้หลังจาก enableNetworkQualityEstimator และจะส่งข้อยกเว้นหากไม่เรียกใช้

การคืนสินค้า
int

ค่าประมาณของ RTT ของ HTTP เป็นมิลลิวินาที

getTransportRttMs

public int getTransportRttMs()

แสดงผลค่าประมาณ RTT ของการรับส่ง (เป็นมิลลิวินาที) ที่คำนวณโดยตัวประมาณคุณภาพเครือข่าย ตั้งค่าเป็น CONNECTION_METRIC_UNKNOWN หากค่าไม่พร้อมใช้งาน ต้องเรียกใช้หลังจาก enableNetworkQualityEstimator และจะส่งข้อยกเว้นหากไม่เรียกใช้

การคืนสินค้า
int

ค่าประมาณของ RTT ของการรับส่งข้อมูลเป็นมิลลิวินาที

getVersionString

public String getVersionString()
การคืนสินค้า
String

สตริงเวอร์ชันของเครื่องยนต์ที่มนุษย์อ่านได้

openConnection

public URLConnection openConnection(URL url)

สร้างการเชื่อมต่อใหม่กับทรัพยากรที่ระบุโดย URLurl

หมายเหตุ: การติดตั้งใช้งาน java.net.HttpURLConnection ของ Cronet มีข้อจำกัดบางอย่าง โปรดดูรายละเอียดที่ createURLStreamHandlerFactory

พารามิเตอร์
URL url

URL ของทรัพยากรที่จะเชื่อมต่อ

การคืนสินค้า
URLConnection

อินสแตนซ์ java.net.HttpURLConnection ที่ติดตั้งใช้งานโดย CronetEngine นี้

ส่ง
java.io.IOException

หากเกิดข้อผิดพลาดขณะเปิดการเชื่อมต่อ

openConnection

public URLConnection openConnection(URL url, Proxy proxy)

สร้างการเชื่อมต่อใหม่กับทรัพยากรที่ระบุโดย URLurl โดยใช้พร็อกซีที่ระบุ

หมายเหตุ: การติดตั้งใช้งาน java.net.HttpURLConnection ของ Cronet มีข้อจำกัดบางอย่าง โปรดดูรายละเอียดที่ createURLStreamHandlerFactory

พารามิเตอร์
URL url

URL ของทรัพยากรที่จะเชื่อมต่อ

Proxy proxy

พร็อกซีที่จะใช้เมื่อสร้างการเชื่อมต่อ

การคืนสินค้า
URLConnection

อินสแตนซ์ java.net.HttpURLConnection ที่ติดตั้งใช้งานโดย CronetEngine นี้

ส่ง
java.io.IOException

หากเกิดข้อผิดพลาดขณะเปิดการเชื่อมต่อ

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

นำเครื่องมือฟังคำขอที่เสร็จสมบูรณ์ออก

พารามิเตอร์
RequestFinishedInfo.Listener listener

ผู้ฟังออก

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

นำ Listener ของเวลาในการรับส่งออกหากลงทะเบียนไว้ก่อนหน้านี้ด้วย addRttListener ควรเรียกใช้หลังจากเพิ่ม NetworkQualityRttListener เพื่อหยุดรับการสังเกตการณ์

พารามิเตอร์
NetworkQualityRttListener listener

เครื่องมือฟังเวลาในการรับส่งข้อมูล

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

นำ Listener ของปริมาณงานออก ควรเรียกใช้หลังจากเพิ่ม NetworkQualityThroughputListener ด้วย addThroughputListener เพื่อหยุดรับการสังเกตการณ์

พารามิเตอร์
NetworkQualityThroughputListener listener

ผู้ฟังของอัตราการส่งข้อมูล

การปิดใช้งาน

public void shutdown()

ปิด CronetEngine หากไม่มีคำขอที่ใช้งานอยู่ ไม่เช่นนั้นจะเกิดข้อยกเว้น

เรียกใช้ในเธรดเครือข่ายไม่ได้ - เธรดที่ Cronet เรียกใช้ใน Executor (ซึ่งแตกต่างจากเธรดที่ Executor เรียกใช้การเรียกกลับ) อาจบล็อกจนกว่าจะล้างข้อมูลทรัพยากรทั้งหมดของ CronetEngine

startNetLogToDisk

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

เริ่มการบันทึก NetLog ไปยังไดเรกทอรีที่ระบุโดยมีขนาดที่จำกัด NetLog จะมีเหตุการณ์ที่ปล่อยออกมาจาก CronetEngine ที่ใช้งานอยู่ทั้งหมด NetLog มีประโยชน์ในการแก้ไขข้อบกพร่อง เมื่อการบันทึกหยุดทำงาน stopNetLog ระบบจะเขียนข้อมูลลงใน netlog.json ใน dirPath หากการบันทึกหยุดชะงัก คุณสามารถต่อไฟล์ที่อยู่ในไดเรกทอรีย่อย .inprogress ด้วยตนเองได้โดยใช้ https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py คุณดูบันทึกได้โดยใช้เบราว์เซอร์ Chrome ไปที่ chrome://net-internals/#import

พารามิเตอร์
String dirPath

ไดเรกทอรีที่จะสร้างไฟล์ netlog.json โดย dirPath ต้องมีอยู่แล้ว ต้องไม่มีไฟล์ NetLog ในไดเรกทอรี หากมีการบันทึกอย่างต่อเนื่อง ระบบจะไม่สนใจเมธอดนี้

boolean logAll

true เพื่อรวมเหตุการณ์พื้นฐาน คุกกี้ของผู้ใช้ ข้อมูลเข้าสู่ระบบ และไบต์ทั้งหมดที่โอนในบันทึก ตัวเลือกนี้มีความเสี่ยงด้านความเป็นส่วนตัวเนื่องจากจะเปิดเผยข้อมูลเข้าสู่ระบบของผู้ใช้ และควรใช้เฉพาะในกรณีที่ได้รับความยินยอมจากผู้ใช้และในสถานการณ์ที่บันทึกจะไม่เป็นแบบสาธารณะ false เพื่อรวมเฉพาะเหตุการณ์พื้นฐาน

int maxSize

พื้นที่ว่างในดิสก์ทั้งหมดสูงสุดเป็นไบต์ที่ NetLog ควรใช้ การใช้พื้นที่ดิสก์จริงอาจเกินขีดจำกัดนี้เล็กน้อย

startNetLogToFile

public void startNetLogToFile(String fileName, boolean logAll)

เริ่มการบันทึก NetLog ไปยังไฟล์ NetLog จะมีเหตุการณ์ที่ปล่อยออกมาจาก CronetEngine ที่ใช้งานอยู่ทั้งหมด NetLog มีประโยชน์ในการแก้ไขข้อบกพร่อง คุณดูไฟล์ได้โดยใช้เบราว์เซอร์ Chrome ไปที่ chrome://net-internals/#import

พารามิเตอร์
String fileName

เส้นทางไฟล์แบบเต็ม ต้องระบุ หากมีไฟล์อยู่แล้ว ระบบจะตัดทอนไฟล์ก่อนเริ่มต้น หากมีการบันทึกอย่างต่อเนื่อง ระบบจะไม่สนใจเมธอดนี้

boolean logAll

true เพื่อรวมเหตุการณ์พื้นฐาน คุกกี้ของผู้ใช้ ข้อมูลเข้าสู่ระบบ และไบต์ทั้งหมดที่โอนในบันทึก ตัวเลือกนี้มีความเสี่ยงด้านความเป็นส่วนตัวเนื่องจากจะเปิดเผยข้อมูลเข้าสู่ระบบของผู้ใช้ และควรใช้เฉพาะในกรณีที่ได้รับความยินยอมจากผู้ใช้และในสถานการณ์ที่บันทึกจะไม่เป็นแบบสาธารณะ false เพื่อรวมเฉพาะเหตุการณ์พื้นฐาน

stopNetLog

public void stopNetLog()

หยุดการบันทึก NetLog และล้างข้อมูลไฟล์ลงในดิสก์ หากเซสชันการบันทึกไม่ได้กำลังดำเนินการอยู่ ระบบจะไม่สนใจการเรียกนี้

วิธีการที่ได้รับการปกป้อง

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
)