CronetEngine

public abstract class CronetEngine

คลาสย่อยโดยตรงที่ทราบ
คลาสย่อยโดยอ้อมที่ทราบ
JavaCronetEngine

java.net.HttpURLConnection ที่มี CronetEngine เป็นแบ็กเอนด์


เครื่องมือในการประมวลผล UrlRequest ซึ่งใช้สแต็ก HTTP ที่ดีที่สุดที่มีอยู่ในแพลตฟอร์มปัจจุบัน คุณสร้างอินสแตนซ์ของคลาสนี้ได้โดยใช้ Builder

สรุป

ประเภทที่ซ้อนกัน

เครื่องมือสร้างสำหรับ CronetEngine ซึ่งช่วยให้กำหนดค่า CronetEngine ที่รันไทม์ได้

คลาสนี้เลิกใช้งานแล้ว

System.loadLibrary ไม่น่าเชื่อถือใน minSDK <= 23 และมีการใช้วิธีนี้เพื่อจัดเตรียมโปรแกรมโหลดทางเลือกที่น่าเชื่อถือกว่า

ค่าคงที่

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

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

void

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

void

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

void
bindToNetwork(long networkHandle)

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

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

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

abstract URLStreamHandlerFactory

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

int

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

int

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

int

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

abstract byte[]

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

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

int

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

int

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

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

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

abstract URLConnection

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

void

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

void

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

void

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

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

ดูเพิ่มเติม
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_3G

public static final int EFFECTIVE_CONNECTION_TYPE_3G = 4

การประมาณประเภทการเชื่อมต่อที่มีประสิทธิภาพคือ 3G

ดูเพิ่มเติม
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_4G

public static final int EFFECTIVE_CONNECTION_TYPE_4G = 5

การประมาณประเภทการเชื่อมต่อที่มีประสิทธิภาพคือ 4G

ดูเพิ่มเติม
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_OFFLINE

public static final int EFFECTIVE_CONNECTION_TYPE_OFFLINE = 1

อุปกรณ์ออฟไลน์อยู่

ดูเพิ่มเติม
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_SLOW_2G

public static final int EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 2

การประมาณประเภทการเชื่อมต่อที่มีประสิทธิภาพคือ 2G ที่ช้า

ดูเพิ่มเติม
getEffectiveConnectionType

EFFECTIVE_CONNECTION_TYPE_UNKNOWN

public static final int EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0

ไม่ทราบค่าประมาณประเภทการเชื่อมต่อที่มีประสิทธิภาพ

ดูเพิ่มเติม
getEffectiveConnectionType

UNBIND_NETWORK_HANDLE

public static final long UNBIND_NETWORK_HANDLE = -1

ค่าที่จะใช้เพื่อยกเลิกการเชื่อมโยงเครือข่ายก่อนหน้า

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

CronetEngine

public CronetEngine()

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

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

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

createURLStreamHandlerFactory

public abstract URLStreamHandlerFactory createURLStreamHandlerFactory()

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

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

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

แม้ว่า Cronet จะรองรับและแนะนำให้ใช้คำขอที่ใช้โปรโตคอล HTTPS แต่ก็ไม่รองรับ HttpsURLConnection API การไม่รองรับนี้ยังรวมถึงการไม่ใช้ฟีเจอร์ 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 abstract 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 abstract String getVersionString()
การคืนสินค้า
String

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

newUrlRequestBuilder

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

สร้างเครื่องมือสร้างสำหรับ UrlRequest การเรียกกลับทั้งหมดสำหรับออบเจ็กต์ UrlRequest ที่สร้างขึ้นจะเรียกใช้ในเธรดของ executor executor ต้องไม่เรียกใช้ Task ในเธรดที่เรียก execute เพื่อป้องกันไม่ให้การดำเนินการเครือข่ายถูกบล็อกและทำให้เกิดข้อยกเว้นในระหว่างการปิดระบบ

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

URL สำหรับคำขอที่สร้างขึ้น

UrlRequest.Callback callback

ออบเจ็กต์ Callback ที่เรียกใช้ในเหตุการณ์ต่างๆ

Executor executor

Executor ที่จะเรียกใช้ Callback ทั้งหมด

openConnection

public abstract URLConnection openConnection(URL url)

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

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

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

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

การคืนสินค้า
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 abstract 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 abstract void startNetLogToFile(String fileName, boolean logAll)

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

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

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

boolean logAll

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

stopNetLog

public abstract void stopNetLog()

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