2024 年 7 月 10 日,星期三
我們收到您透過 Play 管理中心當機報告提供的意見,指出 Google Mobile Ads SDK 發生應用程式無回應 (ANR) 錯誤。分析這些報表後,我們更新了 SDK 導入最佳做法,以降低 ANR 發生率。建議的最佳做法如下:
- 在背景執行緒上初始化 Mobile Ads SDK
- 啟用廣告載入最佳化標記
1. 在背景執行緒上初始化 Mobile Ads 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