我有一个大约有四个片段的活动,这些片段有子片段。我在Mainactivity中有一个带有静态InterstitialAd的静态计数器,该计数器通过片段调用,但是这会导致内存泄漏。有更好的做法吗?

内部主

static int clicksCount,newsCount;
private static InterstitialAd mInterstitialAd;

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


每当我需要从片段中调用它时

MainActivity.interstitalAd();

最佳答案

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();

10-01 22:53