在内存泄漏报告中使用 LeakCanary 库,我得到了加密的方法名称。例如:
static hk.o
references ht.a
leaks Activity instance
谁能解释一下这份报告?为什么它不写我使用的方法的名称?
我使用的是没有 ProGuard 的代码的调试版本。
这是源代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
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);
}
如果我理解正确,那么泄漏与 相关
InterstitialAd,这是 Google Play 服务的一部分,其源代码已关闭,因此被混淆了。您可以通过尝试在 Android Studio 中查看源代码来验证这一点。Poetrmu 和 LeakCanary 展示了这样的方法名称。问题是图书馆在轮换后保留了指向活动的链接,此时很可能正在下载广告: