每次Application启动时,Android Tag Manager容器都会为null

时间:2017-03-10 12:01:23

标签: android performance android-layout singleton google-tag-manager

这就是我在项目中获取跟踪代码管理器密钥的方法。我正在使用单例类,因此它不会一次又一次地访问Tag Manager服务。

但是当我关闭并重新启动应用程序时,它会将容器置为空,并再次点击谷歌标记管理器服务。

我希望它在应用程序重新启动时拥有容器数据,因此它不会再次点击服务器至少12小时(容器的默认到期时间)。

请指导我。

public class ContainerHolderSingleton {

    private static ContainerHolder containerHolder;

    private ContainerHolderSingleton() {
    }

    public static ContainerHolder getContainerHolder() {
        return containerHolder;
    }

    public static void setContainerHolder(ContainerHolder c) {
        containerHolder = c;
    }

}

TagManager

public String initTagManager(){

        CONTAINER_ID= sampleApp.getAppContext().getResources().getString(R.string.tag_manager_id);

        TagManager tagManager = TagManager.getInstance(context.getApplicationContext());

        if(ContainerHolderSingleton.getContainerHolder() == null) {

            PendingResult pending = tagManager.loadContainerPreferFresh(
                    CONTAINER_ID, 
                    R.raw.gtmnh6xdp);  


            ContainerHolder containerHolder = (ContainerHolder) pending.await(2, TimeUnit.SECONDS);
            ContainerHolderSingleton.setContainerHolder(containerHolder);
        }
        if (ContainerHolderSingleton.getContainerHolder().getStatus() != com.google.android.gms.common.api.Status.zzalw) {
            kURL = staticURL;
        }

        container = ContainerHolderSingleton.getContainerHolder().getContainer();
        if (ContainerHolderSingleton.getContainerHolder().getContainer() != null)
            kURL = container.getString(TMURLKey);


         if (kURL.isEmpty()) {

            kURL = staticURL;
        }

        return kURL;
    }

0 个答案:

没有答案