คลาสตัวช่วยสำหรับการเปิดคอนเทนเนอร์
ซึ่งเป็น Wrapper ที่เกี่ยวข้องกับเมธอด openContainer(String, Container.Callback)
สำหรับผู้ใช้ที่ไม่ต้องการการควบคุมอย่างละเอียดในระดับที่เครื่องมือนี้มีให้
คอนเทนเนอร์หนึ่งๆ อาจอยู่ในสถานะ 3 สถานะดังต่อไปนี้
- ค่าเริ่มต้น: นี่คือคอนเทนเนอร์ที่จัดส่งด้วยแอป (คอนเทนเนอร์ไบนารีหรือไฟล์ json ที่แปลงเป็นคอนเทนเนอร์)
- ไม่มีอัปเดต: คอนเทนเนอร์ที่ดาวน์โหลดจากเซิร์ฟเวอร์ แต่ไม่ได้ดาวน์โหลดเมื่อเร็วๆ นี้
- ใหม่: คอนเทนเนอร์ที่มีการดาวน์โหลดจากเซิร์ฟเวอร์เมื่อเร็วๆ นี้
นี่คือตัวอย่างที่ผู้โทรต้องการรอนานถึง 100 มิลลิวินาทีเพื่อรับคอนเทนเนอร์ที่ไม่ใช่ค่าเริ่มต้น (ดึงข้อมูลคอนเทนเนอร์เริ่มต้นหากหมดเวลา)
ContainerFuture future = ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 100); Container container = future.get();
หากผู้โทรต้องการรับการแจ้งเตือนแบบไม่พร้อมกันเมื่อคอนเทนเนอร์พร้อมใช้งาน แต่ต้องการระบุระยะหมดเวลาด้วยตนเองเป็น 0.5 วินาที ผู้โทรควรคลาสย่อย ContainerOpener.Notifier
ตัวอย่างการใช้งาน:
ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 500, new ContainerOpener.Notifier() { @Override void containerAvailable(Container container) { // Code to handle the container available notification and save the container. } });
สรุปข้อมูลชั้นเรียนที่ซ้อนกัน
ที่ปรับปรุงใหม่ | ContainerOpener.ContainerFuture | ออบเจ็กต์ที่จะส่งคืนคอนเทนเนอร์ | |
ที่ปรับปรุงใหม่ | ContainerOpener.Notifier | ออบเจ็กต์ที่จะได้รับการแจ้งเตือนเมื่อคอนเทนเนอร์พร้อมใช้งาน | |
enum | ContainerOpener.OpenType | ค่ากำหนดในการเปิดคอนเทนเนอร์ |
สรุปแบบคงที่
long | DEFAULT_TIMEOUT_IN_MILLIS | ระยะหมดเวลาเริ่มต้นในหน่วยมิลลิวินาทีสำหรับการส่งคำขอคอนเทนเนอร์ |
สรุปวิธีการสาธารณะ
static ContainerOpener.ContainerFuture |
openContainer(TagManager tagManager, สตริง containerId, ContainerOpener.OpenType openType, ยาว timeoutInMillis)
|
คงที่ เป็นโมฆะ |
openContainer(TagManager tagManager, สตริง containerId, ContainerOpener.OpenType openType, ลองจิจูด timeoutInMillis, ContainerOpener.Notifier เครื่องมือแจ้งเตือน)
|
ค่าคงที่
สาธารณะ คงที่ ขั้นสุดท้าย ยาว DEFAULT_TIMEOUT_IN_MILLIS
ระยะหมดเวลาเริ่มต้นในหน่วยมิลลิวินาทีสำหรับการส่งคำขอคอนเทนเนอร์
วิธีการสาธารณะ
สาธารณะ static ContainerOpener.ContainerFuture openContainer (TagManager tagManager, สตริง containerId, ContainerOpener.OpenType ContainerOpener.OpenType
รอสูงสุด timeoutInMillis
เพื่อให้คอนเทนเนอร์โหลด (ไม่ใช่ค่าเริ่มต้นหรือใหม่โดยขึ้นอยู่กับ openType
ที่ระบุ)
หากประเภทแบบเปิดคือ PREFER_NON_DEFAULT
ระบบจะโหลดคอนเทนเนอร์ที่ไม่ใช่ค่าเริ่มต้น (บันทึกหรือดึงข้อมูลจากเครือข่าย) และเลิกบล็อก ContainerFuture ทันทีที่เกิดเหตุการณ์ใดเหตุการณ์หนึ่งต่อไปนี้
- คอนเทนเนอร์ที่บันทึกไว้ก็โหลดขึ้นมา
- หากไม่มีคอนเทนเนอร์ที่บันทึกไว้ ระบบจะโหลดคอนเทนเนอร์เครือข่ายหรือเกิดข้อผิดพลาดของเครือข่าย
- การจับเวลาจะสิ้นสุด
หากเกิดข้อผิดพลาดของเครือข่ายหรือตัวจับเวลาหมดอายุ get()
อาจแสดงผลคอนเทนเนอร์เริ่มต้น
หากประเภทแบบเปิดคือ PREFER_FRESH
ระบบจะโหลดคอนเทนเนอร์ใหม่ (ที่บันทึกไว้หรือดึงข้อมูลจากเครือข่าย) และเลิกบล็อก ContainerFuture ทันทีที่เกิดเหตุการณ์ใดเหตุการณ์หนึ่งต่อไปนี้
- คอนเทนเนอร์ใหม่ที่บันทึกไว้จะโหลดขึ้น
- หากไม่มีคอนเทนเนอร์ที่บันทึกไว้หรือคอนเทนเนอร์ที่บันทึกไว้นั้นไม่มีอัปเดต แสดงว่าคอนเทนเนอร์เครือข่ายโหลดหรือเกิดข้อผิดพลาดเกี่ยวกับเครือข่าย
- การจับเวลาจะสิ้นสุด
หากเกิดข้อผิดพลาดของเครือข่ายหรือตัวจับเวลาหมดอายุ get()
อาจแสดงผลคอนเทนเนอร์เริ่มต้นหรือคอนเทนเนอร์ที่ไม่มีอัปเดตที่บันทึกไว้
หากเรียกใช้ openContainer
เป็นครั้งที่ 2 ด้วย containerId
ที่ระบุ ระบบจะแสดงผล ContainerFuture
โดยที่ get()
จะส่งคืนคอนเทนเนอร์เดียวกับที่เรียกครั้งแรก
พารามิเตอร์
tagManager | TagManager ที่จะเรียก openContainer |
containerId | รหัสของคอนเทนเนอร์ที่จะโหลด |
openType | ตัวเลือกในการเปิดคอนเทนเนอร์ |
timeoutInMillis | จำนวนมิลลิวินาทีสูงสุดที่ต้องรอเพื่อโหลดคอนเทนเนอร์ (จากร้านค้าที่บันทึกไว้) หาก Null ระบบจะใช้ DEFAULT_TIMEOUT_IN_MILLIS |
คิกรีเทิร์น
- ออบเจ็กต์ที่เมธอด get จะคืนค่าคอนเทนเนอร์ แต่สามารถบล็อกได้สูงสุด ระยะหมดเวลาInMillis จนกว่าคอนเทนเนอร์จะพร้อมใช้งาน
สาธารณะ static void openContainer (TagManager tagManager, สตริง tagManager, ContainerOpener.OpenType tagManager,}เวลารอtagManager,เปิดคอนเทนเนอร์tagManager,}เวลา ContainerOpener.Notifier
รอสูงสุด timeoutInMillis
เพื่อให้คอนเทนเนอร์โหลด (ไม่ใช่ค่าเริ่มต้นหรือใหม่โดยขึ้นอยู่กับ openType
ที่ระบุ)
หากประเภทแบบเปิดคือ PREFER_NON_DEFAULT
ระบบจะโหลดคอนเทนเนอร์ที่ไม่ใช่ค่าเริ่มต้น (บันทึกหรือดึงมาจากเครือข่าย) และส่งไปยังตัวแจ้ง ระบบจะเรียกใช้เครื่องมือแจ้งเตือนทันทีที่เกิดเหตุการณ์ใดเหตุการณ์หนึ่งต่อไปนี้
- คอนเทนเนอร์ที่บันทึกไว้ก็โหลดขึ้นมา
- หากไม่มีคอนเทนเนอร์ที่บันทึกไว้ ระบบจะโหลดคอนเทนเนอร์เครือข่ายหรือเกิดข้อผิดพลาดของเครือข่าย
- การจับเวลาจะสิ้นสุด
หากเกิดข้อผิดพลาดของเครือข่ายหรือตัวจับเวลาหมดอายุ คอนเทนเนอร์ที่ส่งไปยัง containerAvailable(Container)
จะเป็นคอนเทนเนอร์เริ่มต้น
หากประเภทแบบเปิดคือ PREFER_FRESH
ระบบจะโหลดคอนเทนเนอร์ใหม่ (ที่บันทึกไว้หรือดึงข้อมูลจากเครือข่าย) และส่งไปยังตัวแจ้ง ระบบจะเรียกใช้เครื่องมือแจ้งเตือนทันทีที่เกิดเหตุการณ์ใดเหตุการณ์หนึ่งต่อไปนี้
- คอนเทนเนอร์ใหม่ที่บันทึกไว้จะโหลดขึ้น
- หากไม่มีคอนเทนเนอร์ที่บันทึกไว้หรือคอนเทนเนอร์ที่บันทึกไว้นั้นไม่มีอัปเดต ระบบจะโหลดคอนเทนเนอร์เครือข่ายหรือเกิดข้อผิดพลาดเกี่ยวกับเครือข่าย
- การจับเวลาจะสิ้นสุด
หากเกิดข้อผิดพลาดของเครือข่ายหรือตัวจับเวลาหมดอายุ คอนเทนเนอร์ที่ส่งผ่านไปยัง containerAvailable(Container)
อาจเป็นค่าเริ่มต้นหรือคอนเทนเนอร์ที่บันทึกไว้ที่ไม่มีอัปเดต
หากคุณเรียกใช้ openContainer(TagManager, String, ContainerOpener.OpenType, Long)
เป็นครั้งที่ 2 ด้วย containerId
ที่กำหนด ระบบจะส่งคอนเทนเนอร์เดียวกันที่แสดงผลจากการเรียกใช้ก่อนหน้าไปยังตัวแจ้งทันทีที่พร้อมให้บริการ
พารามิเตอร์
tagManager | TagManager ที่จะเรียก openContainer |
containerId | รหัสของคอนเทนเนอร์ที่จะโหลด |
openType | ตัวเลือกในการเปิดคอนเทนเนอร์ |
timeoutInMillis | จำนวนมิลลิวินาทีสูงสุดที่ต้องรอเพื่อโหลดคอนเทนเนอร์ (จากร้านค้าและ/หรือเครือข่ายที่บันทึกไว้) หาก Null ระบบจะใช้ DEFAULT_TIMEOUT_IN_MILLIS |
เครื่องมือแจ้งเตือน | ตัวแจ้งซึ่งจะถูกเรียกใช้เมื่อคอนเทนเนอร์พร้อมใช้งาน ระบบจะเรียกใช้ด้วยคอนเทนเนอร์ที่บันทึกไว้หรือคอนเทนเนอร์เครือข่าย (หากมี) และโหลดก่อนระยะหมดเวลา มิฉะนั้น ระบบจะเรียกใช้ด้วยคอนเทนเนอร์เริ่มต้น ตัวแจ้งอาจเรียกจากชุดข้อความอื่น |