Android Admob Внутренняя утечка памяти

Я пытаюсь показать вставки в конце некоторых действий. Проблема заключается в том, что рекламные вставки препятствуют сборке мусора, что приводит к исключению нехватки памяти. Как мне решить это? Заранее спасибо.

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{ //...
} 

3 ответа

Хорошо, я, кажется, исправил это, изменив

interstitial = new InterstitialAd(this);

в

interstitial = new InterstitialAd(getApplicationContext());

Я не совсем понимаю управление памятью в java/android, но думаю, что происходит потому, что ссылки Activity содержат промежуточные и interstitial ссылки на Activity, поэтому ни один из них не получает мусор. Передача в контексте приложения, а не в контексте действия, предотвращает эту зависимость цикла и решает проблемы. Надеюсь, это кому-то поможет:D.

Просто используйте глобальный контекст приложения:

interstitial = new InterstitialAd(getApplication());

Не использовать getApplicationContext(), потому что возвращаемое значение будет вашей текущей активностью.

Одна вещь, которая помогла мне, это вызвать interstitial.show() для uithread (так как я предполагаю, что его UI-вещи нужно делать в ui-нити)

Другие вопросы по тегам