Android的Kotlin扩展开销

丹尼尔·戈麦斯·里科

在整个代码中使用kotlin扩展是一个好主意吗?

  1. 我很想念来自iOS的扩展,但这是在android中使用这些东西的好方法吗?参考http://antonioleiva.com/kotlin-android-extension-functions/

  2. 有更好的解决方案吗?

安德鲁·斯坦梅兹

为了进一步扩展Andrey Breslav的答案,Kotlin扩展功能确实可以编译为静态java方法,因此大多数通用扩展功能都不会产生开销。但是,在这种情况下,您需要注意在Google IO演讲的前几分钟,杰克·沃顿(Jake Wharton)的呼唤

那就是当您传递高阶函数(lambda)作为扩展函数的参数时,如下所示:

fun View.doSomething(block: () -> Unit) {
    //do something 
}

这段代码会降低性能,因为内部的lambda必须在内部创建一个匿名类,这可能会消耗方法并导致类加载。这是一个非常简单的修复,方法inline是在函数中添加关键字,这实际上会将您的代码内联到所有此调用站点函数中,因此您不会在每次调用扩展函数时都受到性能影响。

inline fun View.doSomething(block: () -> Unit) {
    //do something 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Magento-扩展开发,处理卸载

来自分类Dev

无法展开RemoteViews android

来自分类Dev

在Android扩展列表中,当组展开时如何获取当前视图?

来自分类Dev

在Android中展开和折叠

来自分类Dev

反应性扩展的开销?

来自分类Dev

Android LinearLayout展开

来自分类Dev

在android java类中使用Kotlin扩展

来自分类Dev

Android SearchView集默认展开

来自分类Dev

Android Studio:超出了GC开销限制

来自分类Dev

如何从Kotlin的InnerClass扩展

来自分类Dev

Android BottomSheetDialogFragment无法完全展开

来自分类Dev

Kotlin扩展功能

来自分类Dev

Kotlin Android扩展和菜单

来自分类Dev

用于gnome shell扩展开发的文档?

来自分类Dev

Kotlin Android扩展程序访问文本视图

来自分类Dev

用于gnome shell扩展开发的文档?

来自分类Dev

在Android扩展列表中,当组展开时如何获取当前视图?

来自分类Dev

如何展开Android ActionBar?

来自分类Dev

JVM内存开销是线性扩展还是恒定不变?

来自分类Dev

在Android中展开和折叠

来自分类Dev

Highcharts传说展开并扩展

来自分类Dev

Android-单击以展开

来自分类Dev

如何处理 !批量启用扩展展开

来自分类Dev

展开的链接列表中的内存开销?

来自分类Dev

CallKit 扩展开始请求

来自分类Dev

Chrome 扩展开发:禁用扩展的操作

来自分类Dev

Android Studio 3.0 kotlin 扩展函数“未解析的引用”

来自分类Dev

如何同时使用 Kotlin Android 扩展和数据绑定?

来自分类Dev

如何设置python扩展开发环境?