Android 每次暴露后应加载间隙

Android 每次暴露后应加载间隙,android,admob,Android,Admob,我需要在我的应用程序中使用Interstitulard。但问题是,在第一次曝光之后,在显示我正在创建广告之前,通过请求调用loadAd方法,然后在适当的时候显示(调用show方法)。一切似乎都很好,但当我下次尝试调用show方法时,它不起作用,因为isLoaded返回false。 有没有办法只加载一次广告 编辑 Thx为答案,但主要问题是loadAd是网络连接,但google建议不要在主线程中执行internet任务,所以它在主ui线程中从internet加载广告是什么意思。这会导致我的应用程序

我需要在我的应用程序中使用Interstitulard。但问题是,在第一次曝光之后,在显示我正在创建广告之前,通过请求调用loadAd方法,然后在适当的时候显示(调用show方法)。一切似乎都很好,但当我下次尝试调用show方法时,它不起作用,因为isLoaded返回false。 有没有办法只加载一次广告

编辑


Thx为答案,但主要问题是loadAd是网络连接,但google建议不要在主线程中执行internet任务,所以它在主ui线程中从internet加载广告是什么意思。这会导致我的应用程序出现延迟。他们自相矛盾。

你必须在广告关闭时重新加载广告。我定义了一个方法“reloadInterstitual()”并在onCreate()方法中调用它。它工作得很好。只要在希望显示广告时调用DisplayInterstitual():

public class MyActivityClass extends Activity{
  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       interstitial = new InterstitialAd(MyActivityClass.this);
        interstitial.setAdUnitId("*****");
         reloadInterstitial();
        // Create ad request
        AdRequest adRequest = new AdRequest.Builder().build();

        // Begin loading your interstitial
        interstitial.loadAd(adRequest);
  }

public void displayInterstitial(){  
        if(interstitial != null && interstitial.isLoaded())
            interstitial.show();
    }

private void reloadInterstitial(){
        interstitial.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                // TODO Auto-generated method stub
                super.onAdLoaded();
            }
            @Override
            public void onAdFailedToLoad(int errorCode) {
                // TODO Auto-generated method stub
                super.onAdFailedToLoad(errorCode);
                 interstitial = new InterstitialAd(MyActivityClass.this);
                    interstitial.setAdUnitId("*****");
                    // Begin loading your interstitial
                    interstitial.loadAd(new AdRequest.Builder().build());
                    loadInterCallBacks();
            }

            @Override
            public void onAdOpened() {
                // TODO Auto-generated method stub
                super.onAdOpened();
            }

            @Override
            public void onAdClosed() {
                // TODO Auto-generated method stub
                super.onAdClosed();
                interstitial = new InterstitialAd(MyActivityClass.this);
                interstitial.setAdUnitId("****");
                loadInterCallBacks();
                // Begin loading your interstitial
                interstitial.loadAd(new AdRequest.Builder().build());
            }

            @Override
            public void onAdLeftApplication() {
                // TODO Auto-generated method stub
                super.onAdLeftApplication();
            }
        });

    }


 private void loadInterCallBacks(){
        interstitial.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                // TODO Auto-generated method stub
                super.onAdLoaded();
            }
            @Override
            public void onAdFailedToLoad(int errorCode) {
                // TODO Auto-generated method stub
                super.onAdFailedToLoad(errorCode);
                 interstitial = new InterstitialAd(MyActivityClass.this);
                    interstitial.setAdUnitId("xxxxxxxxxxx");
                    // Begin loading your interstitial
                    interstitial.loadAd(new AdRequest.Builder().build());
                    loadInterCallBacks();
            }

            @Override
            public void onAdOpened() {
                // TODO Auto-generated method stub
                super.onAdOpened();
            }

            @Override
            public void onAdClosed() {
                // TODO Auto-generated method stub
                super.onAdClosed();
                interstitial = new InterstitialAd(MyActivityClass.this);
                interstitial.setAdUnitId("xxxxxx");
                loadInterCallBacks();
                // Begin loading your interstitial
                interstitial.loadAd(new AdRequest.Builder().build());
            }

            @Override
            public void onAdLeftApplication() {
                // TODO Auto-generated method stub
                super.onAdLeftApplication();
            }
        });

    }

Thx为答案,但主要问题是loadAd是网络连接,但google建议不要在主线程中执行internet任务,所以它在主ui线程中从internet加载广告是什么意思。这会导致我的应用程序出现延迟。他们在自相矛盾。他们试图告诉你的是用一个后台线程来做网络的事情。。。