运行“finish()”和 OnDestroy() 后,我的 Activity 仍在内存中。它不是垃圾收集。
经过数天的 Memory Profiler 分析后,我在RewardedAd中隔离了这个问题。
基本上,如果我注释 createAndLoadRewardedAd() 方法中的条目,在该方法中初始化了 rewardedAd,则活动将被正确销毁:
private RewardedAd createAndLoadRewardedAd() {
if (1==1) return null; //IF THIS LINE IS COMMENTED, THERE WILL BE MEMORY LEAK!!!
RewardedAd rewardedAd = new RewardedAd(this,
getResources().getString(R.string.rewards_ad_unit_id));
RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() {
@Override
public void onRewardedAdLoaded() {
// Ad successfully loaded.
}
@Override
public void onRewardedAdFailedToLoad(int errorCode) {
// Ad failed to load.
}
};
rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback);
return rewardedAd;
}
我已经按照官方文档中的说明实施了rewardedAd: https ://developers.google.com/admob/android/rewarded-ads
不幸的是,本文档没有提供禁用/销毁/取消相关对象的说明。
我在onDestroy 中将rewardedAd 设置为null,但这还不够。
注意: 我已在 Google 移动广告 SDK 开发者论坛 https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/android/lPGZq54z53g中发布了同样的问题