我在NativeContentAdView
项目中有一个ListView
。当我在其上调用setNativeAd(NativeAd)
时,会出现明显的延迟。所有AdMob类和方法的名称都经过修饰(zzdt
,zzalp
,zzow
等),因此我省略了它们。
AdMob在View#onAttachedToWindow
回调中执行的操作:
BroadcastReceiver
(每个都需要进行Binder事务)(总和为10毫秒) AdMob在OnScrollChangedListener#onScrollChanged
中执行的操作:
数十次DP到PX转换,调用Display#getMetrics
并为每次转换触发Binder事务(总计〜7毫秒)
生成一些JSON(〜8 ms)
评估一些JS(约7毫秒)
创建一个WebView
实例(约5.5毫秒),将其设置(约9毫秒),要求它进入loadUrl
(约7.5毫秒)
在Handler#handleCallback
内(即Handler#post
):
创建一个WebView
,进行设置,添加到Window并评估JS(〜27毫秒)
获取packageInfo(IPC),创建一个WebView
,对其进行设置,要求loadUrl
,检查权限(IPC),解析JSON,再一次获取packageInfo,通过以下方式内省资源Resources#getIdentifier
,获取activityInfo(IPC)(总和约40毫秒)
很明显,所有这些重量级的操作都导致滚动滚动。
我应该怎么做才能避免滞后或我可能做错了什么?为什么AdMob本机AD在我见过的其他应用程序中不那么慢?
使用AdMob / GMS v。10和/或11,但16显示相同的滞后。 所有测量都是使用Nanoscope在其专用仿真器上进行的,但是在真正的旧版Nexus 5上的滞后甚至更糟。