我试图在我的应用程序中放置广告。根据Admob,我必须初始化Mobile
MobileAds.initialize(this, "YOUR_ADMOB_APP_ID");
这会导致代码中的高内存使用量激增。
但是如果我删除这一行,那么ram的使用率就会下降&这一行代码似乎对应用程序中的服务器广告没有任何影响。
同样,当从admob请求广告时,ram的使用率再次飙升,并导致应用程序启动时出现3-4个GC事件。我相信这是内存泄漏。
下面是我在
onCreate
方法中请求广告的方式
AdRequest request = null;
if (BuildConfig.DEBUG) {
//Facebook Audience Network
List<String> testDeviceId = new ArrayList<>();
testDeviceId.add("TESTID");//Redmi Note 3
testDeviceId.add("TESTID");//Moto G 1st Gen
AdSettings.addTestDevices(testDeviceId);
//Google Ad-mob
request = new AdRequest.Builder()
.addTestDevice("TESTID")//Redmi Note 3
.addTestDevice("TESTID")//Mot G 1st Gen
.build();
} else {
request = new AdRequest.Builder()
.build();
}
AdView mAdView = findViewById(R.id.adView);
mAdView.loadAd(request);
加载此横幅广告时,会启动多个GC事件。如果我不加载ads,GC事件就不会被踢进来。
对于admob来说,这种行为正常吗?我怎么解决这个问题?
发布于 2022-07-22 19:07:28
你说的完全正确。可以删除MobileAds.initilize(),应用程序就可以工作了,但是。当您请求第一个ads加载时,initilize()方法将被调用。我建议您尽快调用此方法。例如,在应用程序类中。另外,从版本Ad暴21.0.0开始,您可以优化初始化过程。只需将下列行添加到清单中
<meta-data
android:name="com.google.android.gms.ads.flag.OPTIMIZE_INITIALIZATION"
android:value="true"/>
<meta-data
android:name="com.google.android.gms.ads.flag.OPTIMIZE_AD_LOADING"
android:value="true"/>
https://stackoverflow.com/questions/48385087
复制相似问题