ANRs bei der Implementierung von mobilen Anzeigen reduzieren

Mittwoch, 10. Juli 2024

Wir haben Ihr Feedback zu ANR-Fehlern („App antwortet nicht“) im Zusammenhang mit dem Google Mobile Ads SDK über die Absturzberichte der Play Console erhalten. Nach der Analyse dieser Berichte haben wir unsere Best Practices für die SDK-Implementierung aktualisiert, um die ANR-Raten zu senken. Die empfohlenen Best Practices sind:

  1. Mobile Ads SDK in einem Hintergrundthread initialisieren
  2. Optimierungs-Flag für das Laden von Anzeigen aktivieren

1. Mobile Ads SDK in einem Hintergrundthread initialisieren

Bisher wurde empfohlen, das Manifest-Flag OPTIMIZE_INITIALIZATION anzugeben. Es ist jedoch noch etwas Arbeit am Aufrufthread erforderlich, um MobileAds auf die synchrone Verarbeitung anderer Methodenaufrufe vorzubereiten.

Wir empfehlen jetzt, MobileAds.initialize() in einem Hintergrundthread aufzurufen, damit die erforderlichen Arbeiten am aufrufenden Thread im Hintergrund ausgeführt werden können.

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()
      }
    }
  }
}

Hinweis: Wenn Sie MobileAds.initialize() in einem Hintergrundthread aufrufen, ist das Manifest-Flag OPTIMIZE_INITIALIZATION nicht mehr erforderlich.

2. Optimierungs-Flag für das Laden von Anzeigen aktivieren

Wenn Sie das Manifest-Flag OPTIMIZE_AD_LOADING aktivieren, können Sie die meisten Aufgaben zum Laden von Anzeigen in einen Hintergrundthread auslagern. Wir empfehlen, dieses Flag in der AndroidManifest.xml-Datei Ihrer App zu aktivieren, um die Häufigkeit von ANR-Fehlern beim Laden von Anzeigen zu reduzieren.

<manifest>
  ...
  <application>
      ...
      <meta-data
          android:name="com.google.android.gms.ads.flag.OPTIMIZE_AD_LOADING"
          android:value="true"/>
  </application>
</manifest>

Wir haben alle unsere Android-Beispiel-Apps aktualisiert, um diese Best Practices zu implementieren. Weitere Informationen zu Initialisierungs- und Optimierungs-Flags finden Sie unter Erste Schritte und Initialisierung und Laden von Anzeigen optimieren. Wenden Sie sich an uns, wenn Sie Fragen haben oder weitere Hilfe benötigen.

Labels: ad-manager, admob, android, mobile-ads-sdk