gpt4 book ai didi

java - Android Admob Interstitial 内存泄漏

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:14 25 4
gpt4 key购买 nike

我试图在某些 Activity 结束时显示插页式广告。问题是插页式广告似乎可以防止 Activity 被垃圾收集,从而导致内存不足异常。我该如何解决这个问题?提前致谢。

public class AdActivity extends FragmentActivity{

//...

protected InterstitialAd interstitial;

@Override
protected 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);
}

@Override
public 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 引用了 interstitial,而 interstitial 引用了 Activity,所以两者都没有被垃圾收集。传入应用程序上下文而不是 Activity 上下文可以防止这种循环依赖并解决问题。希望这对某人有帮助 :D。

关于java - Android Admob Interstitial 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24463440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com