我已经在你的 proetk LeackCanary 库中安装了。它发现内存泄漏,并给我带来了可能需要它的信息,但我无法理解它,因为我在类里面没有这样的做法。如何准确理解错误出在哪里以及如何修复?谢谢。
公共(public)最终类 Activity 扩展了 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);
}
我无法附上屏幕截图,所以我将描述写 LeakCanary。
static hk.o
references ht.a
leaks Activity instance
最佳答案
您遇到泄漏是因为 InterstitialAd
保存了对 Activity 的引用。你应该替换:
mInterstitialAd = new InterstitialAd(this);
与
mInterstitialAd = new InterstitialAd(this.getApplicationContext());
有关更多信息,请参阅 my answer on a similar question .
关于java - 如何理解显示LeakCanary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41910296/