2015-08-21 5 views
1

У меня есть активность вокруг четырех фрагментов, и эти фрагменты имеют дочерние фрагменты. У меня есть статический счетчик со статическим 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(); 

ответ

0

Это, вероятно, не нужно или разумно повести 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(); 
+0

Ну я думал о создании класса singelton, который был бы лучшей практикой? – busted13

+0

Даже если «Активность» предназначена для одноэлементности, она все равно будет иметь экземпляр и может иметь члены экземпляра. –

+0

Хорошо, я дам вашему решению попробовать, поскольку у меня есть статический ящик, который я должен был зафиксировать внутри одного из фрагментов, которые могли бы привести к утечке. Может работать для обоих. Я обновлю вас как Im done :) – busted13