我有NativeContentAdView一个ListView项目。当我调用setNativeAd(NativeAd)它时,会发生明显的滞后。所有AdMob的类和方法名是错位(zzdt,zzalp,zzow等),所以我忽略它们。
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 …
接口:
interface PublicCloneable {
Object clone();
}
interface HasPosition {
// doesn't matter
}
Run Code Online (Sandbox Code Playgroud)
尝试使用交集类型:
@SuppressWarnings("unchecked")
<E extends PublicCloneable & HasPosition> E cloneAndIncrementPosition(E elem) {
final E clone = (E)elem.clone();
// rest omitted
}
Run Code Online (Sandbox Code Playgroud)
尝试编译javac 1.8.0_60:
$ javac xx.java
xx.java:13: error: clone() in Object cannot implement clone() in PublicCloneable
<E extends PublicCloneable & HasPosition> E cloneAndIncrementPosition(E elem) {
^
attempting to assign weaker access privileges; was public
xx.java:14: error: clone() has protected access in Object
final E clone …Run Code Online (Sandbox Code Playgroud)