2012-05-19 211 views
2

当我使用Admob API时,发现它几乎将我的应用处理内存增加到了10MB。AdMob消耗更多内存

跑不启动AdMob将显示下运行我的应用程序

服务

使广告我发现达到我的应用程序处理大小14MB,它是不会被降低后只有4MB处理存储器。下面

是我的实现代码:

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;    
     }  
    } 

回答

1

我假设在onResume或等价的东西,你要创建一个新的AdView。我不会在这里使用adView.isReady()。我认为isReady仅用于插页式广告,因此可能无法设置为true。我不确定为什么它是广告界面的一部分。

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

+0

谢谢埃里克,在我的实际代码中,如果检查现有广告实例的可用性的条件。 如果我在收到广告之前销毁广告对象,那么它会抛出异常,忽略只有在销毁之前使用iReady。 我曾尝试销毁广告对象以减少adMob占用的内存,但没有运气。 – Abilash