我在我的主要活动中加载一个简单的横幅广告。问题是,每当我启动应用程序时,它在白屏幕上停留大约2秒,然后加载UI。问题不在于应用程序代码,因为在我添加ads之前,应用程序通常会立即启动。这是我加载广告的代码:
在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
}
}
}是否有任何方式可以加载广告而没有用户界面滞后?
发布于 2018-11-05 12:39:39
好了,伙计们,我终于找到了一个快速的解决办法。我发现MobileAds.initialize(context, id)和AdRequest.Builder().build()是有时滞的。显然,除非完全执行onCreate,否则活动不会完全加载。为了绕过这个问题,我使用Handler来延迟MobileAds.initialize和AdRequest.Builder().build,然后它不会使UI延迟。这是我更新的代码:
// 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
}
}
}我希望,如果有人正在为同样的问题而挣扎,那将有帮助。
发布于 2018-11-03 12:24:06
将此用作横幅广告id ca-app-pub-3940256099942544/6300978111
发布于 2019-11-11 16:31:02
Domin建议您为MobileAds.Initialize()做大约2000 is的延迟。请不要那样做。2秒之后,UI就冻结了!用户会非常生气的。当用户开始使用它时,如果启动速度慢于应用程序没有响应性,那就更好了。
https://stackoverflow.com/questions/53131021
复制相似问题