2

运行“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中发布了同样的问题

4

0 回答 0