android - Admob loadAd 正在阻止 Ui 线程
问题描述
我最近在 Admob 上苦苦挣扎,因为我的loadAd
方法是冻结整个应用程序。没有太多要说的,但它发生在发布或调试时,并且取决于设备。
发生这种情况时isAdIdFakeForDebugLogging
出现错误,但仅在调试中。在发布时,任何地方都没有 admob 跟踪。但我的代码永远不会超越ad.loadAd(request)
方法。它无限期地保持在那里加载。
我在我的应用程序中调用该prepareInterstitialBanner()
方法onResume
。该方法如下所示:
fun prepareInterstitialBanner() {
try {
if (ad?.isLoaded == true || ad?.isLoading == true) {
return //Already loading
}
ad = InterstitialAd(activity).apply {
adUnitId = activity.getString(R.string.INSTERSTITIAL_AD_ID)
adListener = object : AdListener() {
override fun onAdLoaded() {
Grove.i { "Ad loaded" }
}
override fun onAdClosed() {
Grove.i { "Ad closed" }
activity.finish()
}
override fun onAdFailedToLoad(p0: Int) {
Grove.i { "Ad failed to load: $p0" }
}
}
}
Grove.i { "Loading Interstitial ad" }
ad!!.loadAd(prepareRequestBuilder())
} catch (e: Exception) {
Grove.e(e) { "Ad failed to load" }
Crashlytics.logException(e)
}
}
private fun prepareRequestBuilder(): AdRequest {
return AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("XXX")
.addTestDevice("XXXX")
.build()
}
几周内我没有更改任何代码,它现在停止工作。有没有人想过这个问题?此外,关于如何将其移至 BG 线程的任何想法。
解决方案
推荐阅读
- comments - 使用 Eclipse RAP 添加 HTML 注释
- r - 如何将反应性rhandsontable重置为默认值?
- flutter - 我可以在 Flutter 中使用变量 with( paddin : EdgeInsets.only(top: 8.0) ) 代替 (8.0) 吗?
- vue.js - [Vue warn]: Error in render: "TypeError: Cannot read property 'shipperid' of undefined"
- java - 与 hibernate 4 和 5 兼容的事务关闭语法
- python - 可以在主窗口中打开 jpeg 文件,但不能在第二个窗口中打开它
- docker - 如何在内部网络中在 docker 中运行 fluentd
- node.js - 如何构建 Express 以始终发送 Angular 同时保护 API 路由?
- eiffel - Eiffel:一种在另一个函数上调用前导重新定义特征的方法
- amazon-web-services - 使用 aws 角色执行无服务器部署