Нативная реклама Admob метод destroy() внутри адаптера recyclerview

Я использую шаблон нативной рекламы admob. Admob рекомендует использовать метод destroy() в нативной рекламе, чтобы избежать утечек памяти. Рекомендуется вызывать метод внутри метода onDestroy() действия.

if (isDestroyed()) {
            ad.destroy();
            return;
        } 

Я использую recyclerview и инициализировал объявление в mainactivity как

MobileAds.initialize(MainActivity.this, "ca-app-pub-3940256099942544~3347511713");

но я поместил остальные рекламные коды в адаптер recyclerview, используя get itemviewtype

@Override
    public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) {

if (getItemViewType(position) == AD_TYPE){

            final AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
                    .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
                        @Override
                        public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
                            // Show the ad.
                            NativeTemplateStyle styles = new
                                    NativeTemplateStyle.Builder().build();

                            TemplateView template = ((adViewHolder) holder).Adtemplate;
                            template.setStyles(styles);
                            template.setNativeAd(unifiedNativeAd);

                        }
                    })
                    .withAdListener(new AdListener() {
                        @Override
                        public void onAdFailedToLoad(int errorCode) {
                            // Handle the failure by logging, altering the UI, and so on.
                        }
                    })
                    .withNativeAdOptions(new NativeAdOptions.Builder()
                            // Methods in the NativeAdOptions.Builder class can be
                            // used here to specify individual options settings.
                            .build())
                    .build();
            adLoader.loadAd(new AdRequest.Builder().build());


        }

где я должен выполнить метод ad.destroy() в этом сценарии? Кроме того, нужно ли мне выполнять какие-либо другие методы для шаблонов нативной рекламы? Любая помощь будет принята с благодарностью.


person sujal shrestha    schedule 12.08.2020    source источник


Ответы (1)


Создайте свою собственную функцию для уничтожения рекламы и вызовите ее из активности onDestroy

В вашем адаптере сделайте такую ​​​​функцию

public void destroyAds() {
    ad.destroy();
}

И из действия onDestroy() вызовите эту функцию

@Override
public void onDestroy() {
    adapter.destroyAds();
} 
person Jyotish Biswas    schedule 12.08.2020
comment
Да, это было бы идеально. Не могли бы вы рассказать мне, как я могу передать параметр (UnifiedNativeAd unifiedNativeAd) из onBindView в метод onDestroy, созданный в адаптере? - person sujal shrestha; 12.08.2020
comment
вы можете следовать этому stackoverflow.com/questions/58626477/ads-in-recyclerview, если хотите, чтобы они использовали объявления в recyclerview и уничтожить его в действии - person Jyotish Biswas; 12.08.2020