2016-08-14 14 views
3

私はAdViewRecyclerViewの内部に統合する方法をStackoverflowで見てきました。私はこれらの記事を追ってきた:RecyclerView内のAdViewの読み込み中の問題

Onetwo

は、基本的にそれを行う方法がonCreateViewHolder内部またはViewHolderのコンストラクタ内loadAdを呼んでいます。

いずれかの方法、これが私の実装です:

JAVA

public class AdExpressViewHolder extends RecyclerView.ViewHolder { 

    public AdExpressViewHolder(View itemView) { 
     super(itemView); 

     final AdView adView = (AdView)itemView.findViewById(R.id.adView); 
     AdRequest request = new AdRequest.Builder() 
       .build(); 
     adView.loadAd(request); 
    } 
} 

XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:ads="http://schemas.android.com/apk/res-auto"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true"> 

     <com.google.android.gms.ads.AdView 
      android:id="@+id/adView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      ads:adUnitId="**********************" 
      ads:adSize="BANNER"> 
     </com.google.android.gms.ads.AdView> 

    </RelativeLayout> 
</RelativeLayout> 

は問題がある:私はRecyclerViewをスクロールするとき、それはそうそれ以来UIスレッドを読み込む初めて詰まった残りの時間は大丈夫です。

これは、それを証明するビデオです:あなたが見ることができるように

Video

、最初のものは、第1のUIをブロックしますが、されていません。

私は間違っていますか?

ありがとうございます。


EDIT

私は、活動に従来AdViewをロードしようとした修正しました。それは動作し、それはUIスレッドではロードされていないようです。 RecyclerViewで起きているようです。 3週間後


、私は、メソッドのプロファイリングを行ってきたが、これは私が持っているものです:あなたは赤い斑点を実現することができます

を。それらは2つの異なるAdViewローディングですが、残りは38の通常のカスタムビューです。より具体的には

それは100%AdViewについてですので、これらは、機能している:

enter image description here

+1

ハイテクは、このバグはリサイクルビューで広告をロードする方法を修正されました – apk

答えて