ContainerOpener

공개 클래스 ContainerOpener

컨테이너를 열기 위한 도우미 클래스입니다.

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> 2,000명

공개 메서드

<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()가 반환될 수 있습니다. 저장된 비활성 컨테이너일 수 있습니다

주어진 containerIdopenContainer를 두 번째로 호출하는 경우 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)는 기본 컨테이너이거나 비활성으로 저장된 컨테이너일 수 있습니다.

주어진 containerIdopenContainer(TagManager, String, ContainerOpener.OpenType, Long)를 두 번째로 호출하는 경우 이전 호출에서 반환된 것과 동일한 컨테이너가 사용할 수 있습니다.

매개변수
tagManager openContainer를 호출할 TagManager
containerId 로드할 컨테이너의 ID
openType 컨테이너를 여는 방법과
timeoutInMillis 컨테이너( 저장된 스토어 및/또는 네트워크). null이면 DEFAULT_TIMEOUT_IN_MILLIS가 사용됩니다.
알림자 컨테이너를 사용할 수 있을 때 호출될 알림자 그것은 저장된 컨테이너 또는 네트워크 컨테이너(사용 가능한 경우)를 통해 호출되고 제한 시간 전에 로드됨 그렇지 않으면 기본 컨테이너와 함께 호출됩니다. 알림 기능은 다른 스레드가 필요합니다.