AdMob 原生广告滞后

Mih*_*x64 8 performance android admob

我有NativeContentAdView一个ListView项目。当我调用setNativeAd(NativeAd)它时,会发生明显的滞后。所有AdMob的类和方法名是错位(zzdtzzalpzzow等),所以我忽略它们。

AdMob 在View#onAttachedToWindow回调中执行的操作:

  • 注册几个BroadcastReceivers(每个都需要一个 Binder 事务)(总和约 10 毫秒)

AdMob 在OnScrollChangedListener#onScrollChanged以下方面的表现:

  • 数十次 DP 到 PX 转换,Display#getMetrics为每次转换调用和触发 Binder 事务(总和约 7 毫秒)

  • 生成一些 JSON (~8 ms)

  • 评估一些 JS(~7 毫秒)

  • 创建一个WebView实例(~5.5 毫秒),设置它(~9 毫秒),要求它loadUrl(~7.5 毫秒)

内部Handler#handleCallbacks(即Handler#post):

  • 创建一个WebView,设置它,添加到 Window 并评估 JS(~27 毫秒)

  • 获取 packageInfo (IPC),创建一个WebView,设置它,请求loadUrl,检查权限 (IPC),解析 JSON,再次获取 packageInfo,通过 内省资源Resources#getIdentifier,获取 activityInfo (IPC)(总和 ~40 毫秒)

显然,所有这些重量级的操作都导致了生涩的滚动。

我应该怎么做才能避免滞后或我可能做错了什么?为什么 AdMob 原生广告在我见过的其他应用程序中没有那么慢?

使用 AdMob/GMS v. 10 和/或 11,但 16 显示相同的滞后。所有测量均在其特殊模拟器上使用Nanoscope进行,但在真正不那么旧的 Nexus 5 上滞后更糟。