2024 年 7 月 10 日,星期三
我们通过 Play 管理中心崩溃报告收到了您的反馈,了解到与 Google 移动广告 SDK 相关的应用无响应 (ANR) 错误。在分析这些报告后,我们更新了 SDK 实现最佳实践,以降低 ANR 发生率。建议的最佳做法如下:
- 在后台线程中初始化移动广告 SDK
- 启用广告加载优化标志
1. 在后台线程中初始化移动广告 SDK
我们之前的最佳实践是指定 OPTIMIZE_INITIALIZATION 清单标志。不过,调用线程仍需执行一些工作,以便 MobileAds 准备好同步处理其他方法调用。
我们现在建议在后台线程上调用 MobileAds.initialize(),以便在后台执行调用线程所需的工作。
import com.google.android.gms.ads.MobileAds import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) CoroutineScope(Dispatchers.IO).launch { // Initialize the Google Mobile Ads SDK on a background thread. MobileAds.initialize(this@MainActivity) {} runOnUiThread { // Load an ad on the main thread. loadAd() } } } }
注意:在后台线程上调用 MobileAds.initialize() 时,不再需要 OPTIMIZE_INITIALIZATION 清单标志。
2. 为广告加载启用优化标志
通过启用 OPTIMIZE_AD_LOADING 清单标志,您可以将大多数广告加载任务分流到后台线程。我们建议您在应用的 AndroidManifest.xml 文件中启用此标志,以减少广告加载导致 ANR 的情况。
<manifest>
...
<application>
...
<meta-data
android:name="com.google.android.gms.ads.flag.OPTIMIZE_AD_LOADING"
android:value="true"/>
</application>
</manifest>我们已更新所有 Android 示例应用,以实现这些最佳实践。如需详细了解初始化和优化标志,请参阅开始使用和对初始化和广告加载过程进行优化。如果您有任何疑问或需要其他帮助,请与我们联系。
标签: ad-manager、 admob、 android、 mobile-ads-sdk