Ленивый AdMob объявления загрузки - PullRequest
0 голосов
/ 03 ноября 2018

Я загружаю простую баннерную рекламу в своей основной деятельности. Проблема в том, что когда я запускаю приложение, оно зависает на 2 секунды на белом экране, а затем загружает пользовательский интерфейс. Проблема не в коде приложения, потому что до того, как я добавил рекламу, приложение запускалось сразу. Это код, который я загружаю объявления:
в onCreate:

MobileAds.initialize(this, "ca-app-pub-#######")
        val mAdView: AdView = findViewById(R.id.adView)
        mAdView.visibility = View.GONE
        val adRequest = AdRequest.Builder().build()
        val adView = AdView(this)
        adView.adSize = AdSize.BANNER
        adView.adUnitId = "ca-app-pub-3940256099942544/6300978111"  <- test id
        initializeAds(mAdView, adRequest)

initializeAds()

 fun initializeAds(adView: AdView, adRequest: AdRequest){
        adView.loadAd(adRequest)
        adView.adListener = object : AdListener(){
            override fun onAdLoaded() {
                super.onAdLoaded()
                if (adView.visibility == View.GONE) {
                    adView.visibility = View.VISIBLE
                }
            }

            override fun onAdFailedToLoad(p0: Int) {
                super.onAdFailedToLoad(p0)
                adView.visibility = View.GONE
            }
        }
    }

Есть ли способ загрузить рекламу без задержки интерфейса?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Хорошо, ребята, наконец-то я нашел быстрый обходной путь. Я обнаружил MobileAds.initialize(context, id) и AdRequest.Builder().build() в качестве задержки. Очевидно, что активность не будет полностью загружена, если onCreate полностью не выполнено. Чтобы обойти это, я использовал Handler, чтобы задержать MobileAds.initialize и AdRequest.Builder().build, и тогда это не приводит к задержке пользовательского интерфейса. Это мой обновленный код:

       // we can't delay UI tasks so we need initialize adView here - it's not heavy task anyway
        val mAdView: AdView = findViewById(R.id.adView)
        mAdView.visibility = View.GONE

        //delay ads to be displayed 2 sec after Activity is loaded
        Handler().postDelayed({
            MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713")
            initializeAds(mAdView)
        }, 2000)

initializeAds(AdView):

   fun initializeAds(adView: AdView) {
        adView.loadAd(AdRequest.Builder().build())
        adView.adListener = object : AdListener() {
            override fun onAdLoaded() {
                super.onAdLoaded()
                //if ad is loaded just show it
                if (adView.visibility == View.GONE) {
                    adView.visibility = View.VISIBLE
                }
            }

            override fun onAdFailedToLoad(p0: Int) {
                //if we can't show ad just hide it
                super.onAdFailedToLoad(p0)
                adView.visibility = View.GONE
            }
        }
    }

Я надеюсь, что это поможет, если кто-то борется с подобной проблемой

0 голосов
/ 03 ноября 2018

Используйте это как идентификатор рекламного баннера ca-app-pub-3940256099942544/6300978111

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...