2017-01-28 52 views
7

Zainstalowałem w twojej bibliotece Proetk LeackCanary. Znalazł wyciek pamięci i przyniósł mi informacje, o które można prosić, ale nie mogę tego zrozumieć, ponieważ nie mam takich praktyk w klasie. Jak dokładnie zrozumieć, gdzie znajduje się błąd i jak go naprawić? Dziękuję Ci.Jak to zrozumieć, pokazuje LeakCanary?

public final Klasa aktywności rozciąga AppCompatActivity {

InterstitialAd mInterstitialAd; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_fci); 
    getWindow().setBackgroundDrawable(null); 

    final ImageButton btn_pas = (ImageButton) findViewById(R.id.btn_pas); 
    Glide.with(getApplicationContext()).load(R.drawable.fci_2).placeholder(R.color.white).into(btn_pas); 

    mInterstitialAd = new InterstitialAd(this); 
    mInterstitialAd.setAdUnitId("ca-app-pub-..."); 

    requestNewInterstitial(); 
} 

@Override 
public void onBackPressed() { 
    if (mInterstitialAd.isLoaded()) { 
     mInterstitialAd.show(); 
     super.onBackPressed(); 
    } else { 
     super.onBackPressed(); 
    } 
    requestNewInterstitial(); 
} 

private final void requestNewInterstitial() { 
    AdRequest adRequest = new AdRequest.Builder().build(); 
    mInterstitialAd.loadAd(adRequest); 
} 

public final void pas(View view) { 
    Intent intent = new Intent(Activity.this, pas.class); 
    startActivity(intent); 
} 

}

Nie mogę dołączyć zrzut ekranu więc opiszę pisze LeakCanary.

static hk.o 
references ht.a 
leaks Activity instance 
+0

Dostaję dokładnie to samo, czy kiedykolwiek zastanawiałeś się skąd wyciek? –

+0

@Drew Nie, nie zrozumiałem. – Denis

Odpowiedz

0

Występuje wyciek, ponieważ InterstitialAd zapisuje odniesienie do działania. należy wymienić:

mInterstitialAd = new InterstitialAd(this); 

z

mInterstitialAd = new InterstitialAd(this.getApplicationContext()); 

na trochę więcej informacji, zobacz my answer on a similar question.