ตัวเปิดคอนเทนเนอร์

คลาสสาธารณะ ContainerOpener

คลาสตัวช่วยสำหรับการเปิดคอนเทนเนอร์

ซึ่งเป็น 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

ระยะหมดเวลาเริ่มต้นในหน่วยมิลลิวินาทีสำหรับการส่งคำขอคอนเทนเนอร์

มูลค่าคงที่: 2000

วิธีการสาธารณะ

สาธารณะ 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
เครื่องมือแจ้งเตือน ตัวแจ้งซึ่งจะถูกเรียกใช้เมื่อคอนเทนเนอร์พร้อมใช้งาน ระบบจะเรียกใช้ด้วยคอนเทนเนอร์ที่บันทึกไว้หรือคอนเทนเนอร์เครือข่าย (หากมี) และโหลดก่อนระยะหมดเวลา มิฉะนั้น ระบบจะเรียกใช้ด้วยคอนเทนเนอร์เริ่มต้น ตัวแจ้งอาจเรียกจากชุดข้อความอื่น