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 openContainer(String, Container.Callback) dành cho người dùng không cần mức độ kiểm soát chi tiết mà nó cung cấp.

Một vùng chứa có thể ở 3 trạng thái sau:

  • Mặc định: đây là vùng chứa đi kèm ứng dụng (tệp nhị phân vùng chứa 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 chưa được tải xuống gần đây.
  • Fresh: một vùng chứa được tải xuống từ máy chủ gần đây.

Dưới đây là ví dụ trong đó phương thức gọi muốn đợi tới 100 mili giây để nhận vùng chứa không 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 được 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. Ví dụ về cách sử dụng:

   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 về lớp lồng ghép

giao diện ContainerOpener.ContainerFuture Đố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ó 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 về phương thức công khai

tĩnh ContainerOpener.ContainerFuture
openContainer(TagManager tagManager, Chuỗi containerId, ContainerOpener.OpenType openType, Thời gian chờ dài trongMillis)
tĩnh trống
openContainer(TagManager tagManager, Chuỗi containerId, ContainerOpener.OpenType openType, timeoutInMillis dài, ContainerOpener.Notifier 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, Chuỗi containerId, ContainerOpener.OpenType openType, Thời gian chờ dài trongMillis)

Chờ tối đa timeoutInMillis lần để tải một vùng chứa (không phải vùng chứa 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ì đây là loại không mặc định (được lưu hoặc truy xuất từ network) được tải và ContainerFuture được bỏ chặn ngay khi một trong các điều sau sẽ xảy ra:

  • sẽ tải một vùng chứa đã lưu.
  • nếu chưa lưu vùng chứa, thì vùng chứa mạng sẽ được tải hoặc xảy ra lỗi mạng.
  • bộ tính giờ sẽ hết hạn.

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

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

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

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

Nếu gọi openContainer lần thứ hai bằng một containerId cụ thể, một ContainerFuture sẽ được trả về có get() sẽ trả về cùng một vùng chứa như lệnh gọi đầu tiên.

Tham số
tagManager TagManager để gọi openContainer
containerId mã 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 rỗng, DEFAULT_TIMEOUT_IN_MILLIS sẽ được dùng.
Giá trị trả về
  • một đối tượng có phương thức get sẽ trả về vùng chứa, nhưng có thể chặn tối đa Thời gian chờInMillis cho đến khi có vùng chứa.

công khai tĩnh trống openContainer (TagManager tagManager, Chuỗi tagManager, ContainerOpener.OpenType tagManager, dài tagManager, ContainerOpener.Notifier

Chờ tối đa timeoutInMillis lần để tải một vùng chứa (không phải vùng chứa 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ì đây là loại không mặc định (được lưu hoặc truy xuất từ network) được tải và chuyển vào trình thông báo. Trình thông báo được gọi ngay khi một trong các điều sau sẽ xảy ra:

  • sẽ tải một vùng chứa đã lưu.
  • nếu chưa lưu vùng chứa, thì vùng chứa mạng sẽ được tải hoặc xảy ra lỗi mạng.
  • bộ tính giờ sẽ hết hạn.

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

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

  • sẽ tải một vùng chứa mới đã lưu.
  • nếu không có vùng chứa nào được 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.
  • bộ tính giờ sẽ hết hạn.

Nếu xảy ra lỗi mạng hoặc bộ tính giờ hết hạn, 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 gọi openContainer(TagManager, String, ContainerOpener.OpenType, Long) lần thứ hai bằng một containerId cụ thể, cùng một 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ở dữ liệu khả dụng.

Tham số
tagManager TagManager để gọi openContainer
containerId mã 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 để chờ tải vùng chứa (từ cửa hàng và/hoặc mạng đã lưu). Nếu rỗng, DEFAULT_TIMEOUT_IN_MILLIS sẽ được dùng.
trình thông báo một trình thông báo sẽ được gọi khi có sẵn vùng chứa. Sẽ là đượ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, hàm sẽ được gọi bằng vùng chứa mặc định. Trình thông báo có thể được gọi từ chuỗi khác nhau.