Aka*_*mar 5 android garbage-collection memory-leaks admob google-admob
我正在尝试在我的应用中放置广告.根据Admob 文档,我必须初始化移动广告SDK
MobileAds.initialize(this, "YOUR_ADMOB_APP_ID");
Run Code Online (Sandbox Code Playgroud)
这会导致代码中高ram使用率的飙升.
但是,如果我删除此行,则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);
Run Code Online (Sandbox Code Playgroud)
加载此横幅广告时,会启动多个GC事件.如果我不加载广告,则GC事件永远不会被踢入.
这种行为与admob一样正常吗?我该如何解决这个问题?
是的,这种行为很正常。AdView 是一个动态 WebView,消耗大约 50mb RAM。当您旋转屏幕并且先前 Activity 的实例附加到侦听器或线程等元素时,大多数内存泄漏都会发生。这里有些例子。要检查您的应用程序是否泄漏,您可以使用LeakCanary或 Android Studio。
在 Android Studio 中检查泄漏
归档时间: |
|
查看次数: |
592 次 |
最近记录: |