【问题标题】:AdMob is consuming more memoryAdMob 消耗更多内存
【发布时间】:2012-05-19 17:15:51
【问题描述】:

当我使用 Admob api 时,我发现它几乎将我的应用程序处理内存增加到了 10MB。

在不启动 AdMob 的情况下运行在我的应用的运行服务下仅显示 4MB 处理内存

启用广告后,我发现我的应用处理大小已达到 14MB,并且没有减少。

下面是我的实现代码:

public void initAd(){
        adView = new AdView(this, AdSize.BANNER, AD_ID);
        adLinearLayout.addView(adView);
        adView.loadAd(new AdRequest());
    }

@Override
    protected void onPause() {
        super.onPause();

        if (adView != null && adView.isReady()) {

            log("destroying ads objects...");
            adView.destroy();
            adView.removeAllViews();

             adView = null;
             adLinearLayout.removeAllViews();
             adLinearLayout = null;              
        }    
    }

【问题讨论】:

    标签: android memory-leaks admob


    【解决方案1】:

    我假设在 onResume 或类似的情况下,您正在创建一个新的 AdView。

    我不会在这里使用adView.isReady()。我认为 isReady 实际上只用于插页式广告,因此它可能不会设置为 true。我不知道为什么它是广告界面的一部分。

    每次调用 onPause 时是否都会收到“正在销毁广告对象...”的日志记录语句(尝试在 if 语句上方记录一些内容以确认)?我的猜测是,您实际上并不是每次都在销毁 AdView,而是不断创建新的。

    【讨论】:

    • 感谢 Eric,在我的实际代码中,我有 if 条件来检查现有广告实例的可用性。如果我在收到广告之前销毁广告对象,那么它将抛出异常,忽略只有我在销毁之前使用了 iReady。我曾尝试销毁广告对象以减少 adMob 占用的内存,但没有运气。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 2011-09-23
    • 1970-01-01
    相关资源
    最近更新 更多