Одно рекламное объявление через целое приложение

У меня есть активность с четырьмя фрагментами, и у этих фрагментов есть дочерние фрагменты. У меня есть статический счетчик со статическим InterstitialAd в Mainactivity, который вызывается через фрагменты, однако это приводит к утечке памяти. Есть ли лучшая практика?

Внутри основной

static int clicksCount,newsCount;
private static InterstitialAd mInterstitialAd;

public static void interstitalAd() {
    clicksCount++;
    if (clicksCount % 3 == 0) {
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        }
    }
}

И всякий раз, когда мне нужно позвонить из фрагментов

MainActivity.interstitalAd();

1 ответ

Решение

Вероятно, нет необходимости или целесообразно рассказывать InterstitialAd сам как статический член, поскольку он будет сохранять контекст, с которым он был создан, бесконечно.

Лучше сделать:

static int clicksCount,newsCount;
private InterstitialAd mInterstitialAd;

public void interstitalAd() {
    clicksCount++;
    if (clicksCount % 3 == 0) {
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        }
    }
}

И тогда в вашем Fragment:

MainActivity mainActivity = (MainActivity)getActivity();
mainActivity.interstitialAd();
Другие вопросы по тегам