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