Java-Android Admob插页式内存泄漏

Java-Android Admob插页式内存泄漏,第1张

概述我正在尝试在一些活动结束时显示插页式广告.问题是插页式广告似乎阻止了对活动进行垃圾回收,从而导致内存不足异常.我该如何解决?提前致谢.publicclassAdActivityextendsFragmentActivity{//...protectedInterstitialAdinterstitial;@OverrideprotectedvoidonCreat

我正在尝试在一些活动结束时显示插页式广告.问题是插页式广告似乎阻止了对活动进行垃圾回收,从而导致内存不足异常.我该如何解决?提前致谢.

public class AdActivity extends FragmentActivity{//...protected InterstitialAd interstitial;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    //...    // Create the interstitial.    interstitial = new InterstitialAd(this);    interstitial.setAdUnitID(INTERSTITIAL_UNIT_ID);    // Create ad request.    AdRequest adRequest2 = new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMulATOR)            .addTestDevice(deviceid)            .build();    // Begin loading interstitial.    interstitial.loadAd(adRequest2);}@OverrIDepublic voID onPause() {    super.onPause();    displayInterstitial();}public voID displayInterstitial() {    if (interstitial.isLoaded() && System.currentTimeMillis() >= lastInterstitial + timeLag * 1000) {        lastInterstitial = System.currentTimeMillis();        interstitial.show();    }}

我用它像:

public class ActivityA extends AdActivity{ //...} 

解决方法:

好吧,我似乎已经通过更改来解决它

interstitial = new InterstitialAd(this);

interstitial = new InterstitialAd(getApplicationContext());

我不完全了解java / androID中的内存管理,但我认为这是因为Activity引用非页内广告,而非页内广告也引用了Activity,因此都不会被垃圾回收.传递应用程序上下文而不是Activity上下文可以防止这种周期依赖性并解决问题.希望这可以帮助某人:D.

总结

以上是内存溢出为你收集整理的Java-Android Admob插页式内存泄漏全部内容,希望文章能够帮你解决Java-Android Admob插页式内存泄漏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1088426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存