android - AdMob 原生广告延迟
问题描述
我有NativeContentAdView
一个ListView
项目。当我调用setNativeAd(NativeAd)
它时,会发生明显的延迟。所有 AdMob 类和方法名称都是错误的(zzdt
,等) zzalp
,zzow
所以我将它们省略了。
AdMob 在View#onAttachedToWindow
回调中执行的操作:
- 注册几个
BroadcastReceiver
s(每个都需要一个 Binder 事务)(总和 ~10 ms)
AdMob 在以下方面执行的操作OnScrollChangedListener#onScrollChanged
:
数十次 DP 到 PX 转换,每次转换调用
Display#getMetrics
并触发 Binder 事务(总和 ~7 毫秒)生成一些 JSON (~8 ms)
评估一些 JS (~7 ms)
创建一个
WebView
实例(~5.5 ms),设置它(~9 ms),要求它loadUrl
(~7.5 ms)
内部Handler#handleCallback
s(即Handler#post
):
创建一个
WebView
,设置它,添加到 Window 并评估 JS (~27 ms)获取 packageInfo (IPC),创建一个
WebView
,设置它,请求loadUrl
,检查权限 (IPC),解析 JSON,再获取一次 packageInfo,通过内省资源Resources#getIdentifier
,获取 activityInfo (IPC)(总和 ~40 毫秒)
显然,所有这些重量级的操作都导致了生涩的滚动。
我应该怎么做才能避免滞后或我可能做错了什么?为什么 AdMob 原生广告在我见过的其他应用程序中没有那么慢?
使用 AdMob/GMS v. 10 和/或 11,但 16 显示相同的滞后。所有测量都是在他们的特殊模拟器上使用Nanoscope进行的,但在真正的不太旧的 Nexus 5 上滞后甚至更糟。
解决方案
推荐阅读
- powershell - Powershell“您必须在'-'运算符之后提供一个值表达式”
- python - Numpy点云图像
- html - 有没有办法通过仅使用 CSS 或 HTML 而没有 Javascript 来淡入滚动动画?
- javascript - 客户端相对寻址并且不允许在应用程序 URL 中使用斜杠
- java - 从 Firestore 存储信息后,阵列列表自动清除
- javascript - 尝试在操作中使用异步代码时的最佳实践
- excel - 有没有办法使用 Excel 作为库而不是 Apache POI
- c# - CSharp.Workspaces 的 RuntimeCompilation 依赖问题
- python - OpenCV:在圆圈内找到小黑(黑)点
- python-3.x - TkInter 的 __init__ 说全局变量不存在