컨테이너를 열기 위한 도우미 클래스입니다.
openContainer(String, Container.Callback)의 래퍼입니다.
메서드를 사용할 수 있습니다.
컨테이너에는 다음과 같은 세 가지 상태가 있습니다.
- 기본값: 앱과 함께 제공되는 컨테이너입니다 (바이너리 컨테이너 또는 컨테이너로 변환된 json 파일).
- 비활성: 서버에서 다운로드되었지만 최근에는 다운로드되지 않은 컨테이너입니다.
- 신규: 최근에 서버에서 다운로드한 컨테이너입니다.
다음은 호출자가 기본이 아닌 컨테이너 (시간이 초과되면 기본 컨테이너 검색)
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 | 컨테이너 요청의 기본 제한 시간(밀리초)입니다. |
공개 메서드 요약
| 정적 ContainerOpener.ContainerFuture |
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
|
| 정적 무효 |
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis, ContainerOpener.Notifier 알림)
|
상수
<ph type="x-smartling-placeholder"></ph> 공개 정적 최종 길게 를 통해 개인정보처리방침을 정의할 수 있습니다. DEFAULT_TIMEOUT_IN_MILLIS
컨테이너 요청의 기본 제한 시간(밀리초)입니다.
공개 메서드
<ph type="x-smartling-placeholder"></ph> 공개 정적 ContainerOpener.ContainerFuture openContainer (TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
컨테이너가 로드될 때까지 최대 timeoutInMillis시간 대기합니다 (기본 또는 최신이 아님).
지정된 openType에 따라 다름).
open 유형이 PREFER_NON_DEFAULT인 경우 기본값이 아닌 (저장되거나 가져온
컨테이너가 로드되고 즉시 ContainerFuture가 차단 해제됩니다.
다음 중 하나가 발생합니다.
- 저장된 컨테이너가 로드됩니다
- 저장된 컨테이너가 없으면 네트워크 컨테이너가 로드되거나 네트워크 오류가 발생합니다.
- 타이머가 만료됩니다.
네트워크 오류가 발생하거나 타이머가 만료되면 get()가 반환될 수 있습니다.
기본 컨테이너입니다
open 유형이 PREFER_FRESH이면 새로운
컨테이너가 로드되고 즉시 ContainerFuture가 차단 해제됩니다.
다음 중 하나가 발생합니다.
- 저장된 새 컨테이너가 로드됩니다
- 저장된 컨테이너가 없거나 저장된 컨테이너가 오래된 경우 네트워크 컨테이너는 네트워크 오류가 발생할 수 있습니다.
- 타이머가 만료됩니다.
네트워크 오류가 발생하거나 타이머가 만료되면 get()가 반환될 수 있습니다.
저장된 비활성 컨테이너일 수 있습니다
주어진 containerId로 openContainer를 두 번째로 호출하는 경우
ContainerFuture가 반환되고 get()가 반환됩니다.
첫 번째 호출과 동일한 컨테이너가 있어야 합니다.
매개변수
| tagManager | openContainer를 호출할 TagManager |
| containerId | 로드할 컨테이너의 ID |
| openType | 컨테이너를 여는 방법과 |
| timeoutInMillis | 컨테이너(
저장된 스토어). null이면 DEFAULT_TIMEOUT_IN_MILLIS가 사용됩니다. |
반환 값
- get 메서드가 컨테이너를 반환하지만 timestampInMillis는 컨테이너를 사용할 수 있을 때까지 유지됩니다.
<ph type="x-smartling-placeholder"></ph> 공개 정적 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType tagManager, Long tagManager, ContainerOpener.Notifier
컨테이너가 로드될 때까지 최대 timeoutInMillis시간 대기합니다 (기본 또는 최신이 아님).
지정된 openType에 따라 다름).
open 유형이 PREFER_NON_DEFAULT인 경우 기본값이 아닌 (저장되거나 가져온
네트워크) 컨테이너가 로드되어 알리미로 전달됩니다. 알림을 받는 즉시
다음 중 하나가 발생합니다.
- 저장된 컨테이너가 로드됩니다
- 저장된 컨테이너가 없으면 네트워크 컨테이너가 로드되거나 네트워크 오류가 발생합니다.
- 타이머가 만료됩니다.
네트워크 오류가 발생하거나 타이머가 만료되면 컨테이너가
containerAvailable(Container)는 기본 컨테이너입니다.
open 유형이 PREFER_FRESH이면 새로운
네트워크) 컨테이너가 로드되어 알리미로 전달됩니다. 알림을 받는 즉시
다음 중 하나가 발생합니다.
- 저장된 새 컨테이너가 로드됩니다
- 저장된 컨테이너가 없거나 저장된 컨테이너가 오래된 경우 네트워크 컨테이너가 로드됨 네트워크 오류가 발생할 수 있습니다.
- 타이머가 만료됩니다.
네트워크 오류가 발생하거나 타이머가 만료되면 컨테이너가
containerAvailable(Container)는 기본 컨테이너이거나 비활성으로 저장된 컨테이너일 수 있습니다.
주어진 containerId로 openContainer(TagManager, String, ContainerOpener.OpenType, Long)를 두 번째로 호출하는 경우
이전 호출에서 반환된 것과 동일한 컨테이너가
사용할 수 있습니다.
매개변수
| tagManager | openContainer를 호출할 TagManager |
| containerId | 로드할 컨테이너의 ID |
| openType | 컨테이너를 여는 방법과 |
| timeoutInMillis | 컨테이너(
저장된 스토어 및/또는 네트워크). null이면 DEFAULT_TIMEOUT_IN_MILLIS가 사용됩니다. |
| 알림자 | 컨테이너를 사용할 수 있을 때 호출될 알림자 그것은 저장된 컨테이너 또는 네트워크 컨테이너(사용 가능한 경우)를 통해 호출되고 제한 시간 전에 로드됨 그렇지 않으면 기본 컨테이너와 함께 호출됩니다. 알림 기능은 다른 스레드가 필요합니다. |