2017-01-28 30 views
7

Proetk LeackCanary kitaplığınıza yükledim. Bir bellek sızıntısı buldu ve bana bilgi getirebilirdi, ancak bunu anlayamıyorum çünkü sınıfta bu tür uygulamalara sahip değilim. Hatanın nerede olduğunu ve nasıl düzeltileceğini tam olarak nasıl anlayabiliriz? Teşekkür ederim.LeakCanary'i nasıl anlayabiliriz?

public final class Etkinlik 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); 
} 

} uzanır

Ben bir ekran görüntüsü ekleyin olamaz bu yüzden anlatacağız LeakCanary yazıyor. InterstitialAd etkinliğe başvuru kaydeder çünkü

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

Aynı şeyi elde ederim, sızıntının nereden geldiğini hiç anladın mı? –

+0

@Drew No, anlamadım. – Denis

cevap

0

Sen sızıntısı yaşıyoruz. Sen değiştirmelisiniz:

mInterstitialAd = new InterstitialAd(this); 

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

biraz daha fazla bilgi için

ile my answer on a similar question bakın.