Java Android MobileAds加载广告太长

Java Android MobileAds加载广告太长,java,android,admob,interstitial,Java,Android,Admob,Interstitial,我希望我的Android应用程序显示广告–interstitalad。我希望它出现在欢迎屏幕之后。这意味着我的WelcomeActivity出现在app start上,最近在这之后,广告就会显示出来 我创建interstituralad并开始在应用程序的OnCreate()方法中加载ad。如果应用程序长时间关闭,ad加载时间将超过13秒。当然这是不合适的——用户不应该等待太久。我做了这个测试,构建了一个直接安装在我手机小米红米4X上的apk版本 因此,问题是——是否应该以其他方式进行?或者广告总

我希望我的Android应用程序显示广告–
interstitalad
。我希望它出现在欢迎屏幕之后。这意味着我的WelcomeActivity出现在app start上,最近在这之后,广告就会显示出来

我创建
interstituralad
并开始在应用程序的
OnCreate()方法中加载ad。如果应用程序长时间关闭,ad加载时间将超过13秒。当然这是不合适的——用户不应该等待太久。我做了这个测试,构建了一个直接安装在我手机小米红米4X上的apk版本

因此,问题是——是否应该以其他方式进行?或者广告总是加载很长时间,我只需要在用户的工作流程中向前移动它

在应用程序的
OnCreate()
中,我开始加载

public class MyApp extends Application {

    private FullScreenAd mFullScreenAd;

    @Override
    public void onCreate() {
        super.onCreate();
        mFullScreenAd = new FullScreenAd(this);
        mFullScreenAd.loadAd();
    }
}
执行情况如下:

public class FullScreenAd{

    private static final String APP_AD_ID = "ca-app-pub-3940256099942544~3347511713";
    private static final String SCREEN_AD_ID = "ca-app-pub-3940256099942544/1033173712";

    private String mAdAppId;
    private String mAdScreenId;
    private InterstitialAd mInterstitialAd;

    private long mLoadStart;

    public FullScreenAd(Context context) {
        super();
        DebugLogger.d();

        mContext = context;
        initAdIDs(null, null);
    }

    private void initAdIDs(String adAppId, String adScreenId) {
        DebugLogger.d();

        mAdAppId = (adAppId != null) ? adAppId : APP_AD_ID;
        mAdScreenId = (adScreenId != null) ? adScreenId : SCREEN_AD_ID;

        mInterstitialAd = new InterstitialAd(mContext);
        mInterstitialAd.setAdUnitId(mAdScreenId);

        setInterstitialAdListener();
    }

    public void loadAd() {

        // Initialize the Mobile Ads SDK.
        MobileAds.initialize(mContext, mAdAppId);
        AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                .build();

        // Start loading the ad in the background.
        mAdIsLoaded.set(false);
        mInterstitialAd.loadAd(adRequest);
        mLoadStart = System.currentTimeMillis();
    }

    private void setInterstitialAdListener() {
        DebugLogger.d();

        mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                DebugLogger.d();

                DebugLogger.d(String.format("Ad loaded in %d ms", System.currentTimeMillis() - mLoadStart));

                mAdIsLoaded.set(true);
            }

        });
    }

   public void showAd(OnAdClosedAction action) {
        DebugLogger.d();

        mInterstitialAd.show();
   }
}

加载一个
AddMob
中间ad需要一些时间。通常只需几秒钟,但如果连接不良,或广告包含动画/视频,则最快可达20-30秒。它甚至可能根本不加载


一个好的做法是在应用程序启动时加载广告并将其保存在内存中,然后在某个时候显示出来——尽可能使其无缝。确保广告加载/显示不会干扰用户体验-不要让用户等待您的广告加载

是的,加载间隙可能需要一些时间,建议提前加载ad:

 mInterstitialAd.loadAd(adRequest);
想看的时候就看

mInterstitialAd.show();

但正如你所说的,你希望你的应用程序启动时在发布本身上插入广告。它可能会导致出现问题,因为它说您无法在应用程序加载或退出时显示广告。

谢谢。我想在欢迎屏幕后显示广告,而不是一开始。但是加载延迟让我把它移到下一步