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.
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. |