Vùng chứa

lớp công khai ContainerOpener

Lớp trợ giúp để mở vùng chứa.

Đây là một trình bao bọc xung quanh phương thức openContainer(String, Container.Callback) dành cho những người dùng không cần đến mức độ kiểm soát chi tiết mà phương thức này cung cấp.

Vùng chứa có thể ở ba trạng thái:

  • Mặc định: đây là vùng chứa đi kèm với ứng dụng (vùng chứa nhị phân hoặc tệp json được chuyển đổi thành vùng chứa).
  • Cũ: một vùng chứa đã được tải xuống từ máy chủ, nhưng không phải gần đây.
  • Mới: một vùng chứa đã được tải xuống từ máy chủ gần đây.

Dưới đây là ví dụ về trường hợp phương thức gọi muốn đợi tối đa 100 mili giây để lấy vùng chứa không phải mặc định (truy xuất vùng chứa mặc định nếu đã hết thời gian chờ).

   ContainerFuture future =
       ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 100);
   Container container = future.get();
 

Nếu phương thức gọi muốn nhận thông báo không đồng bộ khi vùng chứa có sẵn nhưng muốn chỉ định thời gian chờ là 0,5 giây theo cách thủ công, thì phương thức gọi phải phân lớp con ContainerOpener.Notifier. Cách sử dụng mẫu:

   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.
         }
       });
 

Tóm tắt lớp lồng ghép

giao diện ContainerOpener.ContainerFuture Một đối tượng sẽ trả về một Vùng chứa. 
giao diện ContainerOpener.Notifier Đối tượng sẽ nhận được thông báo khi có sẵn vùng chứa để sử dụng. 
enum ContainerOpener.OpenType Các lựa chọn ưu tiên để mở vùng chứa. 

Tóm tắt hằng số

long DEFAULT_TIMEOUT_IN_MILLIS Thời gian chờ mặc định tính bằng mili giây để yêu cầu vùng chứa.

Tóm tắt phương thức công khai

tĩnh ContainerOpener.ContainerFuture
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Thời gian chờ dàiInMillis)
tĩnh khoảng trống
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, timeoutInMillis dài, ContainerOpener.Notifier trình thông báo)

Hằng số

công khai tĩnh cuối cùng dài DEFAULT_TIMEOUT_IN_MILLIS

Thời gian chờ mặc định tính bằng mili giây để yêu cầu vùng chứa.

Giá trị không đổi: 2000

Phương thức công khai

công khai tĩnh ContainerOpener.ContainerFuture openContainer (TagManager tagManager, String containerId, ContainerOpener.OpenType openType,

Chờ tối đa timeoutInMillis thời gian để tải một vùng chứa (không mặc định hoặc mới tuỳ thuộc vào openType được chỉ định).

Nếu loại mở là PREFER_NON_DEFAULT, thì một vùng chứa không mặc định (lưu hoặc truy xuất từ mạng) sẽ được tải và ContainerFuture sẽ được bỏ chặn ngay khi một trong các trường hợp sau đây xảy ra:

  • một vùng chứa đã lưu sẽ được tải.
  • Nếu không có vùng chứa nào được lưu, thì vùng chứa mạng sẽ được tải hoặc xảy ra lỗi mạng.
  • đồng hồ hẹn giờ hết hạn.

Nếu xảy ra lỗi mạng hoặc bộ tính giờ hết hạn, thì get() có thể trả về một vùng chứa mặc định.

Nếu loại mở là PREFER_FRESH, thì một vùng chứa mới (đã lưu hoặc truy xuất từ mạng) sẽ được tải và ContainerFuture sẽ được bỏ chặn ngay khi một trong các trường hợp sau đây xảy ra:

  • một vùng chứa mới đã lưu sẽ được tải.
  • Nếu không có vùng chứa đã lưu hoặc vùng chứa đã lưu đã cũ, thì vùng chứa mạng sẽ được tải hoặc xảy ra lỗi mạng.
  • đồng hồ hẹn giờ hết hạn.

Nếu xảy ra lỗi mạng hoặc bộ tính giờ hết hạn, thì get() có thể trả về một vùng chứa mặc định hoặc một vùng chứa cũ đã lưu.

Nếu bạn gọi openContainer lần thứ hai bằng một containerId nhất định, thì hệ thống sẽ trả về ContainerFuture với get() sẽ trả về chính vùng chứa như lệnh gọi đầu tiên.

Các tham số
tagManager TagManager mà trên đó để gọi openContainer
containerId mã nhận dạng của vùng chứa cần tải
openType lựa chọn cách mở vùng chứa
timeoutInMillis số mili giây tối đa cần chờ tải vùng chứa (từ cửa hàng đã lưu). Nếu giá trị rỗng, DEFAULT_TIMEOUT_IN_MILLIS sẽ được sử dụng.
Trả bóng
  • một đối tượng có phương thức get sẽ trả về vùng chứa, nhưng có thể chặn đến timeoutInMillis cho đến khi có vùng chứa.

công khai tĩnh khoảng trống openContainer (TagManager tagManager, Chuỗi tagManager, ContainerOpener.OpenType tagManager, dài tagManager, 10}openType dài openTypeOpenMiContainerOpener.Notifier

Chờ tối đa timeoutInMillis thời gian để tải một vùng chứa (không mặc định hoặc mới tuỳ thuộc vào openType được chỉ định).

Nếu loại mở là PREFER_NON_DEFAULT, thì một vùng chứa không mặc định (lưu hoặc truy xuất từ mạng) sẽ được tải và truyền vào trình thông báo. Trình thông báo này sẽ được gọi ngay khi một trong các trường hợp sau đây xảy ra:

  • một vùng chứa đã lưu sẽ được tải.
  • Nếu không có vùng chứa nào được lưu, thì vùng chứa mạng sẽ được tải hoặc xảy ra lỗi mạng.
  • đồng hồ hẹn giờ hết hạn.

Nếu xảy ra lỗi mạng hoặc bộ tính giờ hết hạn, thì vùng chứa được truyền vào containerAvailable(Container) sẽ là vùng chứa mặc định.

Nếu loại mở là PREFER_FRESH, thì một vùng chứa mới (lưu hoặc truy xuất từ mạng) sẽ được tải và chuyển vào trình thông báo. Trình thông báo này sẽ được gọi ngay khi một trong các trường hợp sau đây xảy ra:

  • một vùng chứa mới đã lưu sẽ được tải.
  • Nếu không có vùng chứa đã lưu hoặc vùng chứa đã lưu đã cũ, thì vùng chứa mạng sẽ được tải hoặc xảy ra lỗi mạng.
  • đồng hồ hẹn giờ hết hạn.

Nếu xảy ra lỗi mạng hoặc bộ tính giờ hết hạn, thì vùng chứa được truyền vào containerAvailable(Container) có thể là vùng chứa mặc định hoặc vùng chứa đã lưu cũ.

Nếu bạn gọi openContainer(TagManager, String, ContainerOpener.OpenType, Long) lần thứ hai bằng một containerId nhất định, thì chính vùng chứa được trả về từ lệnh gọi trước sẽ được chuyển vào trình thông báo ngay khi có sẵn.

Các tham số
tagManager TagManager mà trên đó để gọi openContainer
containerId mã nhận dạng của vùng chứa cần tải
openType lựa chọn cách mở vùng chứa
timeoutInMillis số mili giây tối đa cần chờ tải vùng chứa (từ cửa hàng và/hoặc mạng đã lưu). Nếu giá trị rỗng, DEFAULT_TIMEOUT_IN_MILLIS sẽ được sử dụng.
trình thông báo một trình thông báo sẽ được gọi khi vùng chứa có sẵn. Phương thức này sẽ được gọi bằng vùng chứa đã lưu hoặc vùng chứa mạng, nếu có và được tải trước khi hết thời gian chờ. Nếu không, mã này sẽ được gọi với vùng chứa mặc định. Trình thông báo này có thể được gọi từ một luồng khác.