MoPub NativeAd(RecyclerView)

init

MoPubRecyclerAdapter(
	streamAdPlacer: MoPubStreamAdPlacer(activity, adPositioning),
	originalAdapter,
	visibilityTracker: VisibilityTracker(activity)
)
MoPubRecyclerAdapter(
	activity!!, 
	originalAdapter, 
	adPositioning=MoPubServerPositioning()
) {
	this@MoPubRecyclerAdapter(
		streamAdPlacer=new MoPubStreamAdPlacer(activity, adPositioning),
		originalAdapter,
		visibilityTracker=new VisibilityTracker(activity)
	) {
		// streamAdPlacer
		mStreamAdPlacer = streamAdPlacer;
		mStreamAdPlacer.setAdLoadedListener(...)
		mStreamAdPlacer.setItemCount(...)
		// originalAdapter
		mOriginalAdapter = originalAdapter;
        setHasStableIdsInternal(mOriginalAdapter.hasStableIds());
		mOriginalAdapter.registerAdapterDataObserver(mAdapterDataObserver);
		// visibilityTracker
		mVisibilityTracker = visibilityTracker;
		mVisibilityTracker.setVisibilityTrackerListener(...)
		
		mViewPositionMap = new WeakHashMap<>();
	}
}

All content manipulation happens through an AdapterDataObserver that the MoPub SDK registers on your original adapter.

MoPubStreamAdPlacer(
	activity, 
	adSource: NativeAdSource(),
	positioningSource: ServerPositioningSource(activity)
)
NativeAdSource(
	nativeAdCache: ArrayList<TimestampWrapper<NativeAd>>(CACHE_LIMIT),
    replenishCacheHandler: Handler(),
    adRendererRegistry: AdRendererRegistry()
)
// streamAdPlacer: MoPubStreamAdPlacer
// visibilityTracker: VisibilityTracker
this@MoPubRecyclerAdapter(
	streamAdPlacer=new MoPubStreamAdPlacer(activity, adPositioning) {
		this@MoPubStreamAdPlacer(
			activity, 
			adSource=new NativeAdSource() {
				this@NativeAdSource(
					nativeAdCache=new ArrayList<TimestampWrapper<NativeAd>>(CACHE_LIMIT),
	                replenishCacheHandler=new Handler(),
	                adRendererRegistry=new AdRendererRegistry()) {
	                	mNativeAdCache = nativeAdCache;
	                	mReplenishCacheHandler = replenishCacheHandler;
        				mReplenishCacheRunnable = new Runnable() {...}
        				mAdRendererRegistry = adRendererRegistry;
        				
        				mMoPubNativeNetworkListener: MoPubNativeNetworkListener {...}
        				mSequenceNumber = 0;
        				resetRetryTime();
	                }
			}, 
			positioningSource=new ServerPositioningSource(activity)
		) {
			mActivity = activity;
			mAdSource = adSource;
        	mPositioningSource = positioningSource;
        	
        	mNativeAdMap: WeakHashMap
        	mViewMap: HashMap
        	mPlacementHandler: Handler
        	mPlacementRunnable = new Runnable() {...}
        	mVisibleRangeStart = 0;
        	mVisibleRangeEnd = 0;
		}
	},
	originalAdapter,
	visibilityTracker=new VisibilityTracker(activity)
)

loadAds

@MoPubRecyclerAdapter
recyclerAdapter.loadAds(adUnitId, requestParameters) {
	@MoPubStreamAdPlacer
	mStreamAdPlacer.loadAds(adUnitId, requestParameters) {
		mAdUnitId = adUnitId;
		mPositioningSource.loadPositions()
		mAdSource.setAdSourceListener() {...}
		mAdSource.loadAds(mActivity, adUnitId, requestParameters) {
			@NativeAdSource
			loadAds(
				requestParameters, 
				moPubNative=new MoPubNative(activity, adUnitId, mMoPubNativeNetworkListener)
			) {
				moPubNative.registerAdRenderer(renderer)
				mRequestParameters = requestParameters;
        		mMoPubNative = moPubNative;
        		
        		replenishCache() {
        			@MoPubNative
        			mMoPubNative.makeRequest(mRequestParameters, mSequenceNumber) {
        				loadNativeAd(requestParameters, sequenceNumber) {
        					requestNativeAd(endpointUrl, null) {
        						mAdLoader = new AdLoader(...)
        						mAdLoader.loadNextAd()
        					}
        				}
        			}
        		}
			}
		}
	}
}
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值