我一直在 Stackoverflow 中寻找如何集成 AdView
里面RecyclerView
.我一直在关注这些帖子:
One , two
基本上这样做的方法是调用 loadAd
内onCreateViewHolder
或在 ViewHolder
的构造函数中.
无论哪种方式,这是我的实现:
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
如您所见,第一个阻塞了 UI,但第二个没有阻塞。
我究竟做错了什么?
先感谢您。
编辑
我试图加载一个传统的
AdView
在一个事件中,固定。它可以工作,并且似乎没有在 UI 线程中加载。似乎它只是发生在 RecyclerView
.3 周后,我完成了方法分析,这就是我得到的结果:
你可以意识到红点。这是 2 种不同的
AdView
正在加载,而其余的是我的 38 个普通自定义 View 。更具体地说,这些是函数,所以它是关于 100%
AdView
:最佳答案
这似乎是 Ads SDK for Android 的一个错误,它没有被修复,至少在 v9.4.0 之前是这样。
更多信息在这里:
https://groups.google.com/forum/#!searchin/google-admob-ads-sdk/ui $20thread%7Csort:relevance/google-admob-ads-sdk/k4IFZA_QGT4/3gMHaCPPBQAJ
关于android-recyclerview - 在 RecyclerView 中加载 AdView 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38941731/