我应该在哪里调用MobileAds.initialize()?

Hel*_*oCW 7 android admob kotlin

我已阅读https://developers.google.com/admob/android/quick-start?hl=en-US#import_the_mobile_ads_sdk

我需要使用代码A初始化MobileAds才能显示AdMob AD.

我有一些活动需要显示AD,我是否需要在我的所有活动中添加代码A?

此外,为什么AdMob广告即使我删除也能正确显示

MobileAds.initialize(this, "YOUR_ADMOB_APP_ID")
Run Code Online (Sandbox Code Playgroud)

代码A.

import com.google.android.gms.ads.MobileAds;

class MainActivity : AppCompatActivity() {
    ...
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
        MobileAds.initialize(this, "YOUR_ADMOB_APP_ID")
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

ear*_*jim 13

文档MobileAds.initialize():

应该尽早调用此方法,每次应用程序启动时只调用一次.

这样做的正确onCreate()方法是在Application类的方法中调用它.

如果你没有Application课程,只需创建一个,如下所示:

class YourApp: Application() {

    override fun onCreate() {
        super.onCreate()
        MobileAds.initialize(this, "YOUR_ADMOB_APP_ID")
    }
}
Run Code Online (Sandbox Code Playgroud)

您必须通过设置标记的属性在AndroidManifest.xml中引用此类:android:nameapplication

<application
    android:name=".YourApp"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

    <!-- ... -->

</application>
Run Code Online (Sandbox Code Playgroud)

关于你的问题:

即使我删除,为什么AdMob广告也能正确显示

MobileAds.initialize(this, "YOUR_ADMOB_APP_ID")
Run Code Online (Sandbox Code Playgroud)

报价德维尔阿琼Busani移动广告SDK团队:

移动广告SDK需要几毫秒的时间来初始化自己,我们现在已经提供了这种方法,可以在您调用第一个广告之前调用它.完成后,您的第一个请求将不会有任何额外的加载时间.如果你不打电话,那么你的第一个AdRequest将需要几毫秒,因为它首先需要初始化自己.

所以基本上如果你不打电话MobileAds.initialize(),那么第一个AdRequest会隐含地调用它.