Iは、フラグメントでアクティビティを実装します。どの断片でも、私はRecyclerViewを実装しました。 RecyclerViewでは、n番目の行ごとに、すでにビューを保持しているMyシングルクラスから静的ビューをアタッチしました。アクティビティの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広告をキャッシュして1時間再利用したいと思っています。しかし、残念ながら私はまだこれで成功していません。ストア広告にスタティックリファレンスを使用すると、メモリリークが発生します。私はFacebook広告を適切にキャッシュする他の方法を知らない。
アクティビティインスタンスのメモリをリークすることなく、アプリケーションで30分以上データを保持したい場合、どうすればよいですか? –
@WakilAhmad:UIウィジェット、アクティビティなどではなく* data *を保持してください。古い古いJavaオブジェクト(POJO)は問題ありません。 – CommonsWare
私はFacebookのネイティブ広告を保持したいと思います。それが正しいか?そうでない場合は、ネイティブ広告を1時間キャッシュする方法を教えてください。 –