【发布时间】:2018-03-29 03:03:58
【问题描述】:
我用片段实现活动。在每个片段中,我都实现了 RecyclerView。在每第 n 行之后的 RecyclerView 中,我从我的单例类中附加了静态视图,这些视图已经持有视图。在活动的 onDestroy 中,我从 GridLayoutManager 中删除所有视图,并从 RecyclerView 中删除所有视图并清除适配器对象。毕竟,我也从我的单例类中清除了静态视图。但是 LeakCanary 会检测到该特定行的活动内存泄漏。如何避免内存泄漏以及如何删除任何持有静态上下文的视图?
int adPosition = FacebookAdCenter.getInstance().getAdPosition(position);
View adView;
if (adPosition >= 0) {
adView = FacebookAdCenter.getInstance().getNativeAdViewWithAdPosition(adPosition);
} else {
adView = null;
}
if (adView == null) {
adView = FacebookAdCenter.getInstance().getNativeAdView(position);
if (adView.getParent() != null) {
((ViewGroup) adView.getParent()).removeView(adView);
}
itemView.addView(adView);
} else {
if (adView.getParent() != null) {
((ViewGroup) adView.getParent()).removeView(adView);
}
itemView.addView(adView);
}
实际上我想缓存 Facebook 广告以重复使用一个小时。但不幸的是,我在这方面仍然没有成功。如果我使用静态引用来存储广告,则存在内存泄漏。我不知道其他正确缓存 Facebook 广告的方法。
【问题讨论】:
标签: android android-fragments memory-leaks leakcanary