2017-01-28 1 views
7

あなたのproetk LeackCanaryライブラリにインストールしました。それはメモリリークを発見し、私に情報を要求するかもしれませんが、私は教室でそのような習慣を持っていないので、私はそれを理解できません。正確にどのようにエラーが発生したのか、どのように修正するのかを正確に理解するには?ありがとうございました。LeakCanaryを理解するには?

パブリック最終クラスアクティビティIはLeakCanaryを書き込む説明するので、私はスクリーンショットを添付することができない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); 
} 

}

を拡張します。

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

私はまったく同じことを得ていますが、漏れがどこから来たのか分かりましたか? –

+0

@Drewいいえ、わかりませんでした。 – Denis

答えて

0

InterstitialAdがアクティビティへの参照を保存するため、リークが発生しています。あなたは交換する必要があります。

mInterstitialAd = new InterstitialAd(this); 

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

で少し詳細情報については、my answer on a similar questionを参照してください。

関連する問題